从terminate处理程序访问所有未捕获的异常 我现在遵循C++核心准则,将我的代码中的所有析构函数设置为 NO>除< /C>。我的一些析构函数可能会抛出异常——在这种情况下,我希望程序崩溃,并向我提供导致崩溃的详细信息。在析构函数上设置noexcept说明符将调用std::terminate(),然后调用默认的terminate\u处理程序。默认的terminate\u处理程序将打印析构函数内部触发的异常。如果在抛出另一个异常时没有调用抛出析构函数,这一点非常好。在这种情况下,我希望terminate\u处理程序打印这两个异常,这样我就可以知道是什么首先触发了错误处理路径
问题是我似乎无法在标准库中找到获取未捕获异常的方法。有一个从terminate处理程序访问所有未捕获的异常 我现在遵循C++核心准则,将我的代码中的所有析构函数设置为 NO>除< /C>。我的一些析构函数可能会抛出异常——在这种情况下,我希望程序崩溃,并向我提供导致崩溃的详细信息。在析构函数上设置noexcept说明符将调用std::terminate(),然后调用默认的terminate\u处理程序。默认的terminate\u处理程序将打印析构函数内部触发的异常。如果在抛出另一个异常时没有调用抛出析构函数,这一点非常好。在这种情况下,我希望terminate\u处理程序打印这两个异常,这样我就可以知道是什么首先触发了错误处理路径,c++,exception,terminate-handler,C++,Exception,Terminate Handler,问题是我似乎无法在标准库中找到获取未捕获异常的方法。有一个std::current_exception()函数,用于获取正在处理的异常;std::uncaught_exceptions()函数仅获取未捕获异常的数量。我想得到一个std::exception\u ptr或一些未捕获的异常。可能吗 见: std::exception_ptr exptr = std::current_exception(); try { std::rethrow_exception(exptr); } cat
std::current_exception()
函数,用于获取正在处理的异常;std::uncaught_exceptions()
函数仅获取未捕获异常的数量。我想得到一个std::exception\u ptr
或一些未捕获的异常。可能吗 见:
std::exception_ptr exptr = std::current_exception();
try {
std::rethrow_exception(exptr);
}
catch (std::exception &ex) {
std::fprintf(stderr, "Terminated due to exception: %s\n", ex.what());
}