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) アセンブリ形式と、簡単なリファレンス概要を示します。

フォーマット アセンブリ形式 Description
DC endfinally

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

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

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

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

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

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

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

適用対象