共用方式為


MFC 中的例外狀況處理

本文說明 MFC 中可用的例外狀況處理機制。 兩種可用機制:

  • C++ 例外狀況,可用在 MFC 3.0 版和以後的版本

  • MFC 例外狀況巨集,可用在 MFC 1.0 版和以後的版本

如果您正在使用 MFC撰寫新的應用程式,您應該使用 C++ 機制。 您可以使用這個以巨集的機制,如果您的現有應用程式已經使用該機制廣泛。

您可以立即轉換現有的程式碼使用 C++ 例外狀況而非 MFC 例外狀況巨集。 將您的程式碼和方針的優點這麼做的在文件 例外狀況:從 MFC 例外狀況巨集轉換中說明。

使用 MFC 例外狀況巨集,如果已開發了應用程式,您仍然可以使用這些巨集以現有的程式碼,同時又使用了, C++ 例外狀況是您的新程式碼時。 這篇文章 例外狀況:3.0 版例外狀況巨集的變更 給這麼做的方針。

注意事項注意事項

若要啟用 C++ 例外狀況處理程式碼,選取啟用程式碼產生網頁的 C++ 例外狀況在專案的 屬性頁 (Visual C++) 對話方塊的 C/C++ 資料夾或使用 /GX 編譯器選項。預設值為 /GX ),停用例外狀況處理。

本章節涵蓋下列主題:

  • 使用例外狀況的時機

  • MFC 例外狀況支援

  • 如需例外狀況的進一步閱讀

使用例外狀況的時機

當函式在程式執行期間,呼叫結果的三種可能發生:正常執行、錯誤執行或例外狀況執行。 每個分類如下。

  • 正常執行。

    函式可提供較快的執行並傳回。 有些函式傳回的結果程式碼給呼叫端,表示函式的結果。 可能的結果碼為函式確實地定義和表示函式的可能結果的範圍。 結果碼表示成功或失敗或甚至表示正常範圍需要的失敗的特定型別。 例如,檔案狀態函式可傳回程式碼指示檔案不存在。 請注意不使用這個詞彙「錯誤碼」,因為結果程式碼代表許多預期結果之一。

  • 錯誤執行

    呼叫端在不適當的內容會在傳遞引數的某些錯誤對函式或呼叫函式。 這種情況會造成錯誤,且在程式開發過程中判斷提示偵測到它。(如需聲明的詳細資訊,請參閱C/C++ 判斷提示。)

  • 異常執行

    例外狀況執行在程式控制之外的條件,例如記憶體不足或發生 I/O 錯誤,會影響函式結果的情況。 應該由攔截和擲回的例外狀況處理異常情況。

使用例外狀況的例外狀況執行特別適合。

MFC 例外狀況支援

如果直接使用 C++ 例外狀況或使用 MFC 例外狀況巨集,您將使用 CException 類別CException-可能擲回由架構或由您的應用程式的衍生物件。

下表顯示MFC所提供的預先定義例外狀況。

例外狀況類別

意義

CMemoryException 類別

記憶體不足。

CFileException 類別

檔案的案例

CArchiveException 類別

封存/序列化例外狀況。

CNotSupportedException 類別

要求的回應不支援的服務。

CResourceException 類別

Windows 資源配置例外狀況。

CDaoException 類別

資料庫例外狀況 (DAO 類別)

CDBException 類別

資料庫例外狀況 (ODBC 類別)

COleException 類別

OLE 例外狀況

COleDispatchException 類別

分派 (自動) 例外狀況。

CUserException 類別

警告擁有訊息方塊的使用者的例外狀況,然後擲回泛型 CException 類別

注意事項注意事項

MFC 支援 C++ 例外狀況和 MFC 例外狀況巨集。MFC 不直接支援 Windows NT 結構化例外狀況處理常式 (SEH),如 結構化例外處理所述。

如需例外狀況的進一步閱讀

使用例外狀況處理, MFC 程式庫下列文章說明:

下列文章 MFC 例外狀況巨集與 C++ 例外狀況關鍵字比較並說明如何以符合您的程式碼:

請參閱

參考

C++ 例外狀況處理

其他資源

如何?:建立您的自訂例外狀況類別?