Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从terminate处理程序访问所有未捕获的异常 我现在遵循C++核心准则,将我的代码中的所有析构函数设置为 NO>除< /C>。我的一些析构函数可能会抛出异常——在这种情况下,我希望程序崩溃,并向我提供导致崩溃的详细信息。在析构函数上设置noexcept说明符将调用std::terminate(),然后调用默认的terminate\u处理程序。默认的terminate\u处理程序将打印析构函数内部触发的异常。如果在抛出另一个异常时没有调用抛出析构函数,这一点非常好。在这种情况下,我希望terminate\u处理程序打印这两个异常,这样我就可以知道是什么首先触发了错误处理路径_C++_Exception_Terminate Handler - Fatal编程技术网

从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());
}