- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 418字
- 2020-10-30 17:56:50
3.10 異常處理
異常就是函數操作中發生的意外情況。例如,被除0將會產生一個異常。很多程序員采取實現異常處理程序的方式來處理這些特殊情況,以避免非預期的程序中止。另外,異常處理程序被串在一起并以一定的順序被調用,直到其中一個能夠處理異常為止。
Microsoft Windows操作系統提供了如下三種形式的異常處理程序。操作系統按給定的順序調用它們,直到其中某一個被成功執行。
1.向量化異常處理(Vectored Exception Handling,VEH)。向量化異常處理程序首先調用以重寫結構化異常處理程序。Windows XP增加了對這種異常處理程序的支持。
2.結構化異常處理(Structured Exception Handling,SEH)。這種方式被實現為每函數(per-function)或每線程(per-thread)的異常處理程序,即每一個函數或每一個線程都有自己的異常處理程序。
3.系統默認異常處理。這是一個全局異常過濾器和處理器,用于處理整個進程的異常情況。如果上面兩個異常處理程序都無法處理異常,那么它將會被調用。
下面一節將討論結構化異常處理和系統默認異常處理。向量化異常處理由于未在軟件漏洞利用中廣泛使用,因而略去。