OpCodes.Endfilter 字段
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将 filter 异常子句中的控制转移回公共语言基础结构 (CLI) 异常处理程序。
public: static initonly System::Reflection::Emit::OpCode Endfilter;
public static readonly System.Reflection.Emit.OpCode Endfilter;
staticval mutable Endfilter : System.Reflection.Emit.OpCode
Public Shared ReadOnly Endfilter As OpCode
字段值
注解
下表列出了指令的十六进制和Microsoft中间语言(MSIL)程序集格式,以及简短的参考摘要:
| Format | 程序集格式 | Description |
|---|---|---|
| FE 11 | endfilter | SEH 异常处理的结束筛选器子句。 |
堆栈过渡行为按顺序排列,为:
value被推送到堆栈上。value从堆栈中弹出;endfilter执行并控制将传输到异常处理程序。
Value (必须属于类型 int32 且是一组特定的值)是从筛选器子句返回的。 它应为以下项之一:
exception_continue_search(value= 0) 继续搜索异常处理程序exception_execute_handler(value= 1)启动异常处理的第二阶段,其中最后一个块运行,直到与此筛选器子句关联的处理程序位于此筛选器子句。 发现后,将执行处理程序。
其他整数值将生成未指定的结果。
筛选器的入口点(如方法的异常表所示)必须是筛选器代码块中的第一个指令。 该 endfilter 指令必须是筛选器代码块中的最后一个指令(因此对于任何单个筛选块只能有一个 endfilter 指令)。 执行 endfilter 指令后,控制以逻辑方式流回到 CLI 异常处理机制。
除了通过异常机制,控件无法传输到筛选器块中。 除使用 throw 指令或执行最终 endfilter 指令外,无法从筛选器块中转移控制。 不能在 try 块中 filter 嵌入块。 如果在块内 filter 引发异常,则会截获该异常,并返回值 0 (exception_continue_search) 。
以下 Emit 方法重载可以使用 endfilter 操作码: