有没有办法在MFC应用程序中捕获未处理的std :: exception?

时间:2014-09-18 11:57:10

标签: c++ exception-handling mfc std

在寻找这个问题的答案时,我遇到了这个问题

In a MFC application, where to put a topmost try/catch?

表示应该覆盖CWinApp :: ProcessWndProcException以捕获所有异常。但是,这仅适用于从CException继承的异常。有没有办法对从std :: exception继承的异常执行此操作?

最后,我想在某个地方放置一个“最顶层”的try / catch块,并在此try / catch块捕获异常时显示一个消息框。

2 个答案:

答案 0 :(得分:0)

在C ++中捕获任何未处理异常的标准方法是使用std::set_terminate()。这将为您注册一个回调,以便在调用std::terminate()时收到通知,其中包括根本没有捕获到异常的情况。

答案 1 :(得分:0)

如何在CWinApp覆盖中处理它?

http://msdn.microsoft.com/en-us/library/akdx0603.aspx

因此,将有一个类在您的应用程序中覆盖CWinApp或CWinAppEx。 CWinApp :: Run函数是消息处理程序。这将是一个很好的地方把你的尝试捕获基础实现。有点像这样:

MyApp::Run(...)
{
    try {
        CWinApp::Run(...);
    }
    catch stuff ...
}