在 MFC 中處理的例外狀況
本文件說明在 MFC 中,您可以使用例外處理機制。 這兩個機制可供使用:
- MFC 例外巨集,可用的 MFC 版本 1.0 和更新版本
如果您正在撰寫新的應用程式使用 MFC,您應該使用 C++ 的機制。 如果您現有的應用程式已經廣泛使用此機制,您可以使用巨集為基礎的機制。
您可以輕易地轉換現有的程式碼使用 C++ 例外狀況,而不是 MFC 例外巨集。 文件中所描述的轉換您的程式碼和執行這項作業的指導方針的好處從 MFC 例外巨集轉換的例外狀況:。
如果您已經發展使用 MFC 例外巨集的應用程式,您可以繼續在新的程式碼中使用 C++ 例外狀況時,現有的程式碼中使用這些巨集。 發行項例外狀況: 在 3.0 版例外巨集的變更提供方針執行這項作業。
注意事項 |
---|
若要啟用 C++ 例外處理程式碼中,選取 [專案的 [C/C++] 資料夾中的 [程式碼產生] 頁上的 [啟用 C++ 例外屬性頁 (C++)對話方塊中或使用 /GX 編譯器選項。預設值是 /gx –,即會停用例外處理。 |
本文涵蓋下列主題:
何時使用例外狀況
MFC 例外狀況支援
關於例外狀況的深入閱讀
何時使用例外狀況
當程式執行期間呼叫函式,就會發生下列三種結果: 正常性執行、 錯誤性執行或異常性執行。 每個分類敘述如下。
正常性執行
此函式可能正常執行,並傳回。 有些函式會傳回結果碼給呼叫端,表示函式的結果。 可能的結果代碼被嚴謹的函式定義和表示函式可能結果的範圍。 結果代碼可以指示成功或失敗,或者甚至可以指出失敗的期望的正常範圍內的特定型別。 例如,檔案狀態函式會傳回代碼,表示該檔案不存在。 請注意,因為結果代碼表示許多預期結果的其中一個,不使用術語 「 錯誤碼 」。
錯誤性執行
呼叫端傳遞至函式的引數將時發生錯誤,或適當的內容中呼叫函式。 這種情況會造成錯誤,以及它應該能夠偵測到的程式開發期間的判斷提示。 (如需有關判斷提示的詳細資訊,請參閱判斷提示。)
異常性執行
異常性執行包括能外部程式的控制項,例如記憶體不足或 I/O 錯誤條件的函式結果的情況。 應該由擷取和擲回例外狀況處理異常狀況。
使用例外狀況也特別適用於異常性執行。
MFC 例外狀況支援
不論您直接使用 C++ 例外狀況,或使用 MFC 例外巨集,您將使用CException 類別或CException-衍生由架構或根據您的應用程式可能會擲回的物件。
下表顯示 MFC 所提供的預先定義的例外狀況。
例外狀況類別 |
意義 |
---|---|
記憶體不足 |
|
檔案例外 |
|
保存/序列化例外狀況 |
|
若要要求不支援之服務的回應 |
|
Windows 資源配置的例外狀況 |
|
資料庫例外狀況 (DAO 類別) |
|
資料庫例外狀況 (ODBC 類別) |
|
OLE 例外狀況 |
|
分派 (自動化) 例外狀況 |
|
系統會通知使用者利用訊息方塊中,然後就會擲回為泛型例外狀況CException 類別 |
注意事項 |
---|
MFC 支援 MFC 例外巨集和 C++ 例外狀況。MFC 並不直接支援 Windows NT 結構化例外處理常式 (SEH),如所述結構化例外處理。 |
關於例外狀況的深入閱讀
下列的文件將說明使用 MFC 程式庫進行例外處理:
下列文件比較 MFC 例外巨集和 C++ 例外關鍵字,並解釋如何改寫您的程式碼: