次の方法で共有


OpCodes.Endfinally フィールド

定義

例外ブロックの fault 句または finally 句から共通言語基盤 (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 

フィールド値

注釈

次の表に、命令の 16 進数と Microsoft Intermediate Language (MSIL) アセンブリ形式と、簡単な参照の概要を示します。

形式 アセンブリ形式 説明
DC endfinally

endfault
例外ブロックの finally または fault 句を終了します。

この命令にはスタック遷移の動作はありません。

Endfinallyendfault は、例外ハンドラーが呼び出されるまでスタック アンワインドを続行できるように、 句または fault 句の末尾finallyを通知します。 または endfault 命令はendfinally、制御を CLI 例外メカニズムに戻します。 その後、保護されたブロックが leave 命令で終了した場合、メカニズムはチェーン内の次 finally の句を検索します。 保護されたブロックが例外で終了した場合、CLI は次 finally の または faultを検索するか、例外処理の最初のパスで選択した例外ハンドラーを入力します。

命令は endfinally 、ブロック内でのみ構文的に finally 表示される場合があります。 endfilter命令とは異なり、ブロックが命令でendfinally終わるという要件はなく、ブロック内には必要な数endfinallyの命令を含めることができます。 これらの同じ制限が命令とブロックにfault適用されますendfault

例外メカニズムを使用する場合を除き、制御を finally (または fault) ブロックに転送することはできません。 命令の使用または (または endfault) 命令のfinally実行endfinallyを除き、制御を throw (または fault) ブロックから転送することはできません。 特に、 (または ) ブロックから finally "フォールアウト" したり、 (または fault) ブロック内で Ret または Leave 命令を finally 実行したり faultすることはできません。

endfinallyendfault命令はエイリアスであり、同じオペコードに対応しています。

Emitのメソッド オーバーロードでは、(endfault) オペコードと メソッド EndExceptionBlockILGenerator使用endfinallyできます。

適用対象