OpCodes.Endfinally 字段

定义

将控制从异常块的 faultfinally 子句转移回公共语言结构 (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) 程序集格式,以及简短的参考摘要:

格式 程序集格式 说明
DC endfinally

endfault
finally结束异常块的 或 fault 子句。

此指令没有堆栈转换行为。

Endfinallyendfault 发出 或 fault 子句结束的finally信号,以便堆栈展开可以继续,直到调用异常处理程序。 或 endfinallyendfault 指令将控制权传输回 CLI 异常机制。 然后,如果该机制使用 leave 指令退出了受保护的块,则该机制在链中搜索下 finally 一个子句。 如果已退出受保护的块并出现异常,CLI 将搜索下一个 finallyfault,或者输入在第一次异常处理过程中选择的异常处理程序。

指令 endfinally 只能在块中 finally 按词法显示。 endfilter与指令不同,块不要求以endfinally指令结尾,并且块内可以根据需要有任意数量的endfinally指令。 这些相同的限制适用于 endfault 指令和 fault 块。

控制不能传输到 finally (或 fault) 块,除非通过异常机制。 不能从 (或fault) 块中转移finally控制,除非通过使用throw指令或执行endfinally (或endfault) 指令。 具体而言,不能“脱离”finally (或fault) 块,也不能在 (或Leave) 块中finally执行 Retfault 指令。

请注意, endfaultendfinally 指令是别名 - 它们对应于相同的操作码。

以下 Emit 方法重载可以使用 endfinally (endfault) opcode 以及 ILGenerator 方法 EndExceptionBlock

适用于