try-finally 陳述式 (C)
Microsoft 專有的
try-finally陳述式是以 c 語言可讓應用程式,以確保清除程式碼執行時執行的程式碼區塊將會中斷的 Microsoft 擴充功能。 清除是由解除配置記憶體,關閉檔案,並釋出的檔案控制代碼等工作所組成。 try-finally陳述式是特別有用,如有其中一項檢查由便可能會導致錯誤過早的幾個地方的常式傳回的常式。
請試著最後的陳述式:
__try 複合陳述式__finally 複合陳述式
複合陳述式之後, __try子句是保護的區段。 複合陳述式之後, __finally子句是終止處理常式。 這個處理常式指定一組動作時所執行保護的區段結束時,是否由例外狀況 (不正常終止) 或 (正常結束) 的標準落入結束保護的區段。
控制到達__try陳述式的簡單循序執行 (失敗)。 當控制項進入__try陳述式,其相關聯的處理常式成為使用中。 執行如下所示:
執行保護的區段。
終止處理常式會叫用。
終止處理常式完成後之後, 會繼續執行__finally陳述式。 不論如何保護區段結束 (比方說,透過goto陳述式的保護內文,或透過return陳述式),終止處理常式會在控制流程移出保護區段之前執行。
__leave關鍵字是在try-finally陳述式區塊。 則程式__leave跳至結尾是try-finally區塊。 終止處理常式便會立即執行。 雖然goto陳述式可以用來達到相同的結果, goto陳述式會造成堆疊回溯。 __leave陳述式會比較有效率,因為並未牽涉堆疊回溯。
結束try-finally陳述式使用return陳述式或longjmp執行階段函式會被視為不正常終止。 不能跳到應在__try陳述式,但是跳足夠的法律。 所有__finally出發的點與目的地之間的作用中的陳述式必須執行。 這就稱為 「 區域回溯 」。
如果處理程序在執行時被殺,不會呼叫終止處理常式try-finally陳述式。
注意事項 |
---|
與 c 和 C++ 原始程式檔搭配使用結構化的例外處理。不過,它是不被專門針對 C++。您可以確保您的程式碼使用 C++ 例外處理會更好移植。此外,C++ 例外處理機制會更有彈性,因為它可以處理任何型別的例外狀況。 |
注意事項 |
---|
C + + 程式,則應使用而非結構化的例外處理的 C++ 例外處理。如需詳細資訊,請參閱例外狀況處理 在 C + + 語言參考。 |
請參閱範例的試-除非陳述式 ,查看如何try-finally陳述式的運作。
結束 Microsoft 特定