Share via


結構化的例外處理 (C++)

Windows 95、 Windows 98 和 Windows 2000 (先前 Windows NT) 支援以穩定的方法來處理例外狀況,稱為結構化的例外處理,它牽涉到的作業系統之間的合作關係,但也能以程式設計語言的直接支援。

文法

try 陳述除了

__try 複合陳述式

__except( 運算式 )複合陳述式

備註

例外狀況是未預期或中斷處理序能夠正常進行的事件。 例外狀況,都可以偵測到的硬體及軟體。 硬體例外包括除以零和溢位的數字型別。 軟體的例外包括偵測,並且通知系統,藉由呼叫 RaiseException 函式,並由 Windows 偵測到的特殊情況。

您可以撰寫更可靠的程式碼具有結構化的例外處理。 您可以確保資源,例如記憶體區塊和檔案,會適當封閉在未預期的終止的事件。 您也可以處理特定問題,例如記憶體不足,簡潔結構化的程式碼不會依賴goto陳述式或複雜的傳回碼的測試。

試-除了try 最後陳述式是以 c 語言可讓應用程式的控制權程式通常會終止執行的事件之後的 Microsoft 擴充功能。

注意事項注意事項

與 c 和 C++ 原始程式檔搭配使用結構化的例外處理。不過,它是不被專門針對 C++。但如果您使用結構化的例外處理 C++ 程式,就會呼叫解構函式的本機物件 (如果您使用 /EHsc),您可以確保您的程式碼使用 C++ 例外處理會更好移植。C + + 例外處理機制會更有彈性,因為它可以處理任何型別的例外狀況。

有兩個結構化的例外處理機制:

處理常式的這兩種類型的不同,卻密切相關程序稱為 「 回溯堆疊 」。 發生例外狀況時,Windows 會尋找最近安裝的例外狀況處理常式是目前使用中。 這個處理常式可以執行三件事其中一項動作:

  • 將控制傳遞至其他的處理常式 (無法辨識的例外狀況)。

  • 認識但關閉的例外狀況。

  • 辨識和處理例外狀況。

例外狀況發生時正在執行的函式中無法辨認例外狀況的例外處理常式。 在某些情況下,它可能會更高的堆疊上函式中。 目前正在執行的函式,以及所有的函式在堆疊框架上,已終止。 在這個過程中,堆疊是 「 回溯 」: 區域變數的終止函式,除非它們是靜態,會清除堆疊。

當它回溯堆疊時,作業系統會呼叫任何您所書寫的每個函式的終止處理常式。 使用在終止處理常式可以讓您清除資源,否則會保持開啟受限於異常終止。 如果您輸入的關鍵區段,您可以結束在終止處理常式。 如果程式即將關機的情況下,您可以執行其他的清倉工作,例如關閉和移除暫存檔案。

如果您有使用結構化的例外處理的 c 模組,他們可以搭配使用 C++ 例外處理的 C++ 模組。 請參閱例外狀況處理差異

如需詳細資訊,請參閱:

請參閱

參考

在 Visual C++ 中處理的例外狀況

C + + 關鍵字