1、SetUnhandledExceptionFilter可以设置异常处理函数过滤,就是可以在异常处理链中插入自己的异常处理函数。所以只要设置好我们的异常处理函数就可以捕获到Unhandled Exception。当然,时机一般选择在main函数开头或者是MFC程序的App::InitInstance开头。
SetUnhandledExceptionFilter(MyUnhandledExceptionFilter);
我们的异常处理函数:
LONG WINAPI MyUnhandledExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo)
{
::MessageBox(NULL, "Except", "", MB_OK);
return EXCEPTION_CONTINUE_EXECUTION;
}
注意:返回值有3个,含义如下:
EXCEPTION_CONTINUE_SEARCH (0) 异常不被识别,表示我不处理,其他人来吧,于是windows调用默认的处理程序显示一个错误框,并结束。
EXCEPTION_EXECUTE_HANDLER (1) 异常已经被识别,表示我已经处理了异常,可以优雅地结束了。
{
::MessageBox(NULL, "Except", "", MB_OK);
return 0;
}
{
::MessageBox(NULL, "Except3", "", MB_OK);