MSVC 中的例外狀況處理
例外狀況是可能超出程式控制範圍的錯誤條件,它會使得程式無法繼續沿著其正常執行路徑進行。 某些作業,包括物件建立、檔案輸入/輸出,以及從其他模組進行的函式呼叫,都是潛在的例外狀況來源,即使程式執行正確也一樣。 穩定的程式碼會預測及處理例外狀況。 若要偵測邏輯錯誤,請使用判斷提示而非例外狀況(請參閱 使用判斷提示 )。
例外狀況種類
Microsoft C++ 編譯器 (MSVC) 支援三種例外狀況處理:
-
對於大部分的 C++ 程式,您應該使用 C++ 例外狀況處理。 它是型別安全,可確保在堆疊回溯期間叫用物件解構函式。
-
Windows 提供自己的例外狀況機制,稱為結構化例外狀況處理 (SEH)。 不建議使用 C++ 或 MFC 程式設計。 只在非 MFC C 程式中使用 SEH。
-
自 3.0 版起,MFC 已使用 C++ 例外狀況。 它仍然支援其較舊的例外狀況處理宏,其形式類似于 C++ 例外狀況。 如需混合 MFC 宏和 C++ 例外狀況的建議,請參閱 例外狀況:使用 MFC 宏和 C++ 例外狀況 。
使用 /EH 編譯器選項,指定要在 C++ 專案中使用的例外狀況處理模型。 標準 C++ 例外狀況處理 ( /EHsc ) 是 Visual Studio 中新 C++ 專案中的預設值。
我們不建議您混合例外狀況處理機制。 例如,請勿搭配結構化例外狀況處理使用 C++ 例外狀況。 使用 C++ 例外狀況處理會讓您的程式碼更具可攜性,並可讓您處理任何類型的例外狀況。 如需結構化例外狀況處理缺點的詳細資訊,請參閱 結構化例外狀況處理 。
本節內容
另請參閱
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: