try catch ,Exception 的用意並不是偵錯,而是錯誤發生時該處理的事情

偵錯是程式設計師的責任,當發生錯誤時才丟出Exception

因此我們才需要catch 裡寫上每一種Exception

例如

而當我們在VC開發時,VC很貼心的會為我們丟出[存取違規 Access violation ]或是[嘗試除以零]的Exception

這些Exception 並不是 ISO 標準 C++ 例外狀況處理,而是Windows runtime(VC)偷偷塞回來給我們程式的Exception

使用這些exception的話就表示,我們的程式僅限於windows 平台能用,大大降低了程式的可攜性與延展性

這種Exception 又稱作非同步例外狀況 (asynchronous error),要使用的話設定如下

config

/EHa 編譯器選項可搭配原生 C++ catch(...) 子句,用來支援非同步結構化例外狀況處理 (SEH)。

若要實作 SEH 而不指定 /EHa,您可以使用 __try、__except 和 __finally 語法