先介绍一下
EXCEPTION_EXECUTE_HANDLER(1) 表示下面执行__except块内及其后面的代码
EXCEPTION_CONTINUE_EXECUTION(-1) 表示回到抛出异常处继续向下执行
EXCEPTION_CONTINUE_SEARCH(0) 表示查找下一个异常处理例程入口
//
/** 函数名: HandleDefaultExceptionInfo /
/** 参 数: /
/ 返回值: 无 /
/** 说 明: 捕捉崩溃,并抛出异常 /
/******/
LONG WINAPI HandleDefaultExceptionInfo(PEXCEPTION_POINTERS pExceptPtrs)
{
return EXCEPTION_EXECUTE_HANDLER;
}
SetUnhandledExceptionFilter (HandleDefaultExceptionInfo);//截断未处理异常防止错误对话框弹出
1:SetErrorMode(SEM_NOGPFAULTERRORBOX);
强制进程终止运行
为防止UnhandledExceptionFilter显示异常消息框,可以调用下面的S e t E r r o r M o d e l函数,并向它传递一个SEM_NOGPFAULTERRORBOX标识符:
UINT SetErrorMode(UINT fuErrorMode);
然后,当调用UnhandledExceptionFilter函数来处理异常时,看到已经设置了这个标志,就会立即返回EXCEPTION_EXECUTE_HANDLER。这将导致全局展开并执行BaseProcessStart或BaseThreadStart中的处理程序。该处理程序结束进程。
(详见《windows核心编程》第25章)
2:多使用SEH(结构化异常处理)
__try
{
;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
;
}