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所提供的預先定義例外狀況。
例外狀況類別 |
意義 |
---|---|
記憶體不足。 |
|
檔案的案例 |
|
封存/序列化例外狀況。 |
|
要求的回應不支援的服務。 |
|
Windows 資源配置例外狀況。 |
|
資料庫例外狀況 (DAO 類別) |
|
資料庫例外狀況 (ODBC 類別) |
|
OLE 例外狀況 |
|
分派 (自動) 例外狀況。 |
|
警告擁有訊息方塊的使用者的例外狀況,然後擲回泛型 CException 類別 |
注意事項 |
---|
MFC 支援 C++ 例外狀況和 MFC 例外狀況巨集。MFC 不直接支援 Windows NT 結構化例外狀況處理常式 (SEH),如 結構化例外處理所述。 |
如需例外狀況的進一步閱讀
使用例外狀況處理, MFC 程式庫下列文章說明:
下列文章 MFC 例外狀況巨集與 C++ 例外狀況關鍵字比較並說明如何以符合您的程式碼: