1、編譯器支持的SEH
_try //1.掛入鏈表
{
}
_execpt(過濾表達式) //2.異常過濾
{
//3.異常處理程序
}
2、過濾表達式
表達式返回的值只能有以下三種
<1>EXCEPTION_EXECUTE_HANDLER(1)執行except代碼
<2>EXCEPTION_CONTINUE_SEARCH(0)尋找下一個異常處理函數
<3>EXCEPTION_CONTINUE_EXECUTION(-1)返回出錯位置重新執行
3、過濾表達式的3種寫法
<1>直接寫常量值
<2>表達式
<3>調用函數
4、簡單測試代碼
#include <windows.h>
#include <stdio.h>
void TestException()
{
_try{
//創造異常
_asm{
xor edx,edx
xor ecx,ecx
mov eax,0x10
idiv ecx //edx:eax除ecx
}
}
_except(EXCEPTION_EXECUTE_HANDLER){
printf("如果除異常,我來處理\n");
}
}
int main()
{
TestException();
getchar();
return 0;
}