06 編譯器擴展SEH

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;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章