OpCodes.Endfinally 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将异常块的或finally子句中的控制fault传输回公共语言基础结构 (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 | 程序集格式 | 说明 |
|---|---|---|
| DC | endfinally endfault |
finally结束异常块的或fault子句。 |
此指令没有堆栈转换行为。
Endfinally并向 endfault or fault 子句的finally末尾发出信号,以便堆栈展开可以继续,直到调用异常处理程序。 或endfinallyendfault指令将控制转移回 CLI 异常机制。 然后,如果受保护的块退出并带有离开指令,则机制将搜索链中的下一 finally 个子句。 如果受保护的块退出并出现异常,CLI 将搜索下一个finallyfault或,或输入在第一次异常处理过程中选择的异常处理程序。
指令 endfinally 只能在块内 finally 按词法显示。
endfilter与指令不同,不需要块以指令endfinally结尾,并且该块中可以根据需要有任意数量的endfinally指令。 这些相同的限制适用于 endfault 指令和 fault 块。
除非通过异常机制,否则无法将控制转移到 ( finally 或 fault) 块中。 控件不能从 (或fault) 块转移,finally除非使用throw指令或执行 endfinally (或endfault) 指令。 具体而言,不能在 (或) 块中“掉出”finally或执行 Ret (或faultfault) 块内的finally或Leave指令。
请注意, endfault 说明 endfinally 是别名 - 它们对应于相同的操作代码。
以下 Emit 方法重载可以使用 endfinally (endfault) 操作码和 ILGenerator 方法 EndExceptionBlock。