2009-04-10 51 views
3

我在閱讀this article關於處理損壞的狀態異常,我遇到了讓我感到困惑的事情。什麼是CLR異常系統中的故障子句?

什麼是故障條款?從下面的文章

見報價:

的錯誤情況只能從 傳遞包含意外 條件將這個函數的調用者的功能。 異常有能力將函數執行的 結果從當前函數的作用域的 傳遞到 ,直到它到達知道 如何處理意外情況的幀爲止。該 CLR的異常系統(稱爲 兩通例外製度)提供 異常每前身上 線程的調用堆棧,開始 與呼叫者和程序,直到 一些功能表示將處理 異常(這是被稱爲第一個 通行證)。

異常系統將然後放鬆 每一幀的狀態之間,其中的例外是 升高和在那裏將被處理 (稱爲第二次通過)該呼叫 堆棧上。隨着 堆棧展開,CLR將在解開每個幀時運行 最後條款和故障條款, 。然後,執行處理幀中的 catch子句爲 。

回答

6

根據this article

在C#語言不可用SEH子句的另一個例子是故障子句。它與finally子句類似,只不過它只在被保護的塊中拋出異常時才被調用。

Another article證實:

故障異常處理程序類似,最終只是它被調用只有當它的相關try塊留作例外的結果框。在錯誤處理程序被賦予執行機會之後,異常繼續在搜索或處理程序中尋找它。

2

fault子句是一個子句,它是CLI的一部分,但在C#中不可用。它與finally子句非常相似,只是在try塊中拋出異常時纔會調用它(而finally塊將執行,而不管是否拋出異常)。