有没有一种方法可以捕获那些未被处理的异常(包括在catch块之外抛出的异常)?
我并不真正关心使用异常时通常需要进行的所有正常清理工作,只关注如何捕获异常、将其写入日志/通知用户并退出程序,因为在这些情况下,异常通常是致命的、无法恢复的错误。
类似于:
global_catch()
{
MessageBox(NULL,L"Fatal Error", L"A fatal error has occured. Sorry for any inconvience", MB_ICONERROR);
exit(-1);
}
global_catch(Exception *except)
{
MessageBox(NULL,L"Fatal Error", except->ToString(), MB_ICONERROR);
exit(-1);
}
terminate_handler
中访问异常吗? - Konstantin A. Magguncaugth_exception()
只是一个标志,而current_exception()
返回一个exception_ptr(假设它在terminate处理程序中起作用),在这个阶段似乎你几乎不能对其进行任何操作,除了可能将其转换为bool
。就我所理解的,C++似乎不允许你在没有合适catch块的情况下进入其内容。 - Sz.try { std :: rethrow_exception(the_pointer); } catch(const YourException&e) { ... }
- kralyk