VectoredExceptionHandler 與 UnhandledExceptionFilter 的簡單比較

在 Windows 作業系統中,有二個比較常見的 API 可以用來攔截異常, 

其中一個是 AddVectoredExceptionHandler,另外一個則是 SetUnhandledExceptionFilter

VEH (Vectored Exception Handler) 能攔截所有的異常 (VEH 是當異常發生後第一個被執行的),

而 UEF (Unhandled Exception Filter) 則是在較後面才被呼叫。

而如果前面的異常處理機制已經處理完異常,那麼 UEF 是不會被執行的。

這樣聽起來 VEH 比較厲害,那為何一般程式都是使用 UEF 而不是 VEH 呢?

答案是 VEH 是第一個被執行的異常處理機制,因此會攔截到太多沒必要的異常,

所以你很難在 VEH 中判斷哪些異常是真的會 crash,哪一些是會被處理的異常。

因此一般應用程序都會使用 UEF,會使用到 VEH 的程序主要是 Debugger 、Diagnostic Tool ... 等 ~

留言

這個網誌中的熱門文章

[面試心得] Synology / 群暉 - Product Developr

[面試心得] VICI Holdings / 威旭(高頻交易) - Software Engineer

[面試心得] GoFreight / 聖學科技(Freight Forwarder) - Full-Stack Engineer