先介绍一下
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)
{
;
}