OpCodes.Endfinally 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將控制權從例外狀況區塊的 fault 或 finally 子句傳回 Common Language Infrastructure (CLI) 例外處理常式。
public: static initonly System::Reflection::Emit::OpCode Endfinally;
public static readonly System.Reflection.Emit.OpCode Endfinally;
staticval mutable Endfinally : System.Reflection.Emit.OpCode
Public Shared ReadOnly Endfinally As OpCode
欄位值
備註
下表列出指示的十六進位和 Microsoft Intermediate Language (MSIL) 元件格式,以及簡短的參考摘要:
| 格式 | 元件格式 | Description |
|---|---|---|
| DC | endfinally endfault |
finally結束例外狀況區塊的 或 fault 子句。 |
此指令沒有堆疊轉換行為。
Endfinally並endfault發出 或 fault 子句結尾的finally訊號,讓堆疊回溯可以繼續,直到叫用例外狀況處理程序為止。
endfinally或 endfault 指令會將控制權轉移回 CLI 例外狀況機制。 然後,如果受保護的區塊已結束且具有離開指示,則機制會搜尋鏈結中的下一 finally 個子句。 如果受保護的區塊已結束且發生例外狀況,CLI 會搜尋下一個 finally 或 fault,或輸入在第一次傳遞例外狀況處理期間選擇的例外狀況處理程式。
指令 endfinally 可能只會以語彙方式出現在 區塊內 finally 。
endfilter不同於指示,區塊結尾不需要指示endfinally,而且區塊內可以視需要提供許多endfinally指示。 這些相同的限制適用於 endfault 指令和 fault 區塊。
除非透過例外狀況機制,否則無法將控制權傳送至 finally (或 fault) 區塊。 除非透過使用throw指令或執行 endfinally (或) 指令,否則無法將控制權移出 finally (或 faultendfault) 區塊。 特別是,您無法「卸除finally」 (或 fault) 區塊,或在 (或) 區塊內finally執行 RetLeave 或 fault 指令。
請注意, endfault 和 endfinally 指令是別名, 它們會對應至相同的 opcode。
下列 Emit 方法多載可以使用 endfinally () endfault opcode,以及 ILGenerator 方法 EndExceptionBlock。