[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/boostorg/stacktrace/develop/example/throwing_st.cpp [Back]  [Original]

// Copyright Antony Polukhin, 2016-2026.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)

#include 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//[getting_started_class_traced
#include 
#include  

typedef boost::error_info traced;
//]

//[getting_started_class_with_trace
template 
void throw_with_trace(const E& e) {
    throw boost::enable_error_info(e)
        = 4)
        throw_with_trace(std::out_of_range("'i' must be less than 4 in oops()"));
    if (i = 0) {
            foo(a[i]);
        } else {
            oops(i);
        }
    }
    std::exit(2);
}

BOOST_NOINLINE void foo(int i) {
    bar(--i);
}

#include 
int main() {

    //[getting_started_catching_trace
    try {
        foo(5); // testing assert handler
    } catch (const std::exception& e) {
        std::cerr 

Web Proxy Viewer  |  New URL  |  Original Page