【讀書筆記】windows核心編程 - 異常處理相關

_try 和 _finally的使用:

終止處理程序:

不管try段代碼是如何退出的——無論是return、goto、break、continue(除非是exitprocess、exitthread、terminateprocess、terminatethread),finally段的代碼都能執行。

finally段的return會覆蓋try段的return。

_try 和 _except 的使用:

  • 異常處理程序:

不能同時有_finally 和 _except段,也不能有多個 _finally 或 _except段。
不過可以將try-finally塊嵌套到try-except段中。反過來也可以。

EXCEPTION_EXECUTE_HANDLER:

異常被識別,執行 __ except代碼塊,__except代碼塊執行完畢後,繼續執行 __except代碼之後的代碼。

全局展開:

當異常過濾程序返回EXCEPTION_EXECUTE_HANDLER時,如果當前指令是在try-finally代碼的try中,則離開try之前,會先執行finally中的代碼。

如果一個異常發生在try-finally塊中,並在其上層又沒有try-except塊(同時返回EXCEPTION_EXECUTE_HANDLER),進程就會立刻終止。不會全局展開執行finally代碼。

EXCEPTION_CONTINUE_EXECUTION:

異常被忽略,控制流將在異常出現的點之後,繼續恢復運行

EXCEPTION_CONTINUE_SEARCH (0)

異常不被識別,即當前的這個 __except 模塊不是這個異常錯誤所對應的正確的異常處理模塊。系統將繼續到上一層的try-except域中繼續查找一個恰當的 __except 模塊。

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