我目前正在遵循 C++ 核心指南,将我的代码中的所有析构函数设置为noexcept
. 我的一些析构函数可能会抛出异常——在这种情况下,我希望程序崩溃并为我提供导致崩溃的详细信息。noexcept
在析构函数上设置说明符将调用std::terminate()
它依次调用默认值terminate_handler
。默认terminate_handler
将打印在析构函数中触发的异常。这在抛出另一个异常时未调用抛出析构函数的情况下非常有用。在那种情况下,我想terminate_handler
打印两个异常,这样我就可以知道是什么触发了错误处理路径。
问题是我似乎无法在标准库中找到获取未捕获异常的方法。有一个std::current_exception()
函数可以获取正在处理的异常并且std::uncaught_exceptions()
只获取未捕获异常的数量。我想std::exception_ptr
对未捕获的异常进行处理。那可能吗?