OpCodes.Endfinally 欄位
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
將例外 fault 區塊的 OR 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 中介語言(MSIL)組合格式,並附有簡短參考摘要:
| Format | 組裝格式 | Description |
|---|---|---|
| DC | 終於 端錯 |
結束 finally 例外區塊的 OR fault 子句。 |
此指令沒有堆疊轉換行為。
Endfinally並endfault標示 OR finally 子句結束fault,使堆疊解開能持續直到異常處理程序被呼叫。
endfinally OR endfault 指令將控制權轉回 CLI 例外機制。 如果受保護區塊以 leave 指令退出,機制會搜尋鏈中的下一個 finally 子句。 若受保護區塊以例外退出,CLI 會搜尋下一個 finally 或 fault,或輸入在首次例外處理中選擇的例外處理程序。
指令 endfinally 可能只在區塊內 finally 以詞彙形式出現。 與指令不同 endfilter ,區塊不要求以指令結尾 endfinally ,且區塊內可包含任意多 endfinally 條指令。 這些限制同樣適用於 endfault 指令和 fault 區塊。
控制權只能透過例外機制轉移到( finally 或 fault)區塊中。 控制權無法從(finally或fault)區塊轉移,除非透過指令throw或執行endfinallyendfault該指令。 特別是,你不能「脫離」finally一個(或fault)區塊,也無法在該RetLeave區塊內執行finally一個或指令fault。
請注意 endfault ,和 endfinally 指令是別名——它們對應的是相同的操作碼。
以下 Emit 方法的超載可使用 endfinally (endfault) 操作碼,以及 ILGenerator 方法 EndExceptionBlock。