MSVC 中的例外狀況處理

例外狀況是可能超出程式控制範圍的錯誤條件,它會使得程式無法繼續沿著其正常執行路徑進行。 某些作業,包括物件建立、檔案輸入/輸出,以及從其他模組進行的函式呼叫,都是潛在的例外狀況來源,即使程式執行正確也一樣。 穩定的程式碼會預測及處理例外狀況。 若要偵測邏輯錯誤,請使用判斷提示而非例外狀況(請參閱 使用判斷提示 )。

例外狀況種類

Microsoft C++ 編譯器 (MSVC) 支援三種例外狀況處理:

  • C++ 例外狀況處理

    對於大部分的 C++ 程式,您應該使用 C++ 例外狀況處理。 它是型別安全,可確保在堆疊回溯期間叫用物件解構函式。

  • 結構化例外狀況處理

    Windows 提供自己的例外狀況機制,稱為結構化例外狀況處理 (SEH)。 不建議使用 C++ 或 MFC 程式設計。 只在非 MFC C 程式中使用 SEH。

  • MFC 例外狀況

    自 3.0 版起,MFC 已使用 C++ 例外狀況。 它仍然支援其較舊的例外狀況處理宏,其形式類似于 C++ 例外狀況。 如需混合 MFC 宏和 C++ 例外狀況的建議,請參閱 例外狀況:使用 MFC 宏和 C++ 例外狀況

使用 /EH 編譯器選項,指定要在 C++ 專案中使用的例外狀況處理模型。 標準 C++ 例外狀況處理 ( /EHsc ) 是 Visual Studio 中新 C++ 專案中的預設值。

我們不建議您混合例外狀況處理機制。 例如,請勿搭配結構化例外狀況處理使用 C++ 例外狀況。 使用 C++ 例外狀況處理會讓您的程式碼更具可攜性,並可讓您處理任何類型的例外狀況。 如需結構化例外狀況處理缺點的詳細資訊,請參閱 結構化例外狀況處理

本節內容

另請參閱

C++ 語言參考
x64 例外狀況處理例外狀況
處理 (C++/CLI 和 C++/CX)