windows 異常處理

2021-10-13 11:38:26 字數 2218 閱讀 3276

0x00 異常處理結構

__try

__except (filter-expression)

filter-expression為以下值

exception_execute_handler

exception_continue_search

exception_continue_execution

0x01 文件

0x02 實驗

實驗1_try

__except

(exception_execute_handler)

結果: 列印2

結論: filter-expression 為

exception_execute_handler時,

執行exception-handler block實驗2

__try

__except

(exception_continue_search)

結果: 系統報錯 結論

: exception_continue_search

不能單獨使用 實驗

3: __try

__except

(exception_continue_execution)

結果: 列印1

結論: filter-expression 為

exception_continue_execution時,

不執行exception-handler block,而是回到異常觸發點繼續執行 實驗

4 __try

__except

(exception_continue_search)

}__except

(exception_execute_handler)

結果: 列印3

結論: filter-expression 為 exception_continue_search 時,當前的 exception-handler block不執行,然後將異常交給外部的異常處理,由外部的異常處理判斷.

實驗5__try

__except

(exception_continue_search)

}__except

(exception_continue_search)

}__except

(exception_execute_handler)

結果: 列印4

結論: 進一步驗證實驗4

實驗6__try

__except

(exception_continue_search)

}__except

(exception_continue_search)

}__except

(exception_continue_search)

結果: 報錯

結論: 當前程式如果通過exception_continue_search將異常繼續丟擲,則程式會終止

實驗7__try

__except

(getexceptioncode

() == 0 ?

exception_execute_handler

: exception_continue_search)

結果: 列印4

結論: filter-expression可以為表示式,從而決定如何處理異常(例如:我們關心的則處理,不關心的可以繼續向外丟擲)實驗8

dword

filterfunction()

void

main(

void)

__except

(filterfunction())

} 結果:

列印1 3 結論

: filter-expression可以為函式,必須返回特定的值.且執行filterfunction()在執行exception-handler block

實驗9dword

filterfunction()

void

main(

void)

__finally

} __except

(filterfunction())

} 結果:

列印1 2 3 結論

: 執行順序 filter-expression> termination-handler block> exception-handler block

Windows系統異常處理

在c 中使用try catch不能捕捉作業系統丟擲的異常,如非法位址訪問 浮點異常等,而使用vc中的擴充套件特性 try except和 try finally可以捕捉這類異常.如 int func int i except exception execute handler return i vo...

Windows異常處理學習

一 處理過程 ntdll中的kidispatchexception函式會按兩次處理機會進行分發,過程 如果程式正在被除錯,那麼將異常交給使用者偵錯程式處理,如果沒有則跳過這一步 如果沒有偵錯程式或者偵錯程式沒有處理,將控制權返回到kiuserexceptiondispatcher函式,由它呼叫rtl...

windows核心基礎與異常處理

前兩日碰到了用異常處理來做加密的re題目 所以系統學習一下windows核心相關 核心層 r0 零環 核心態工作區域 大多數驅動程式 應用層 r3 使用者態工作區域 只能使用win32 api與系統互動 當使用者呼叫乙個有關i o的api時 該api封裝在乙個使用者層的dll檔案中 如kernel3...