SEH是WINDOWS中的異常處理機制,可以使代碼編寫者將軟件主要功能編寫和軟件異常情況處理的兩個任務分開。
SEH包含兩部分:
- 終止異常
- 異常處理
1、終止異常處理程序確保不管一個代碼塊(被保護的代碼塊是如何退出的,另一個代碼塊(終止處理程序總能被調用和執行。))
終止處理語法在使用VC編譯器時:
__try
__catch
__finally
__leave關鍵字是為了儘可能的避免讓try塊提前退出。__leave會導致代碼執行流程轉到try塊的結尾,然後直接進入__final的處理中。這樣可以確保清理代碼一定會執行到。
SEH機制可以簡化已知錯誤處理。
2、會進入__finally的情形:
- 從try塊到finally的正常代碼控制流。
- 局部展開:從try中的提前退出(goto、longjump、continue、break、return等語句引起)將程序控制流強制轉入finally塊。
- *全局展開(VISTA系統之後失效。)
finally塊總是在這三種情況之一引起的。
終止處程序的錯誤的用處:
- 因為清理工作集中在一個地方執行,並且保證能得到執行,從而簡化了錯誤處理。
- 提高了代碼的可讀性
- 讓代碼更容易維護
- 如果正確使用,它們對程序性能和體積的影響是微小的
(待續)