情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

OpCodes.Endfilter フィールド

2013/12/12

例外の filter 句から共通言語基盤 (CLI) 例外ハンドラーに制御を転送します。

Namespace:  System.Reflection.Emit
アセンブリ:  mscorlib (mscorlib.dll 内)

public static readonly OpCode Endfilter

命令の 16 進数の形式、MSIL (Microsoft Intermediate Language) アセンブリ形式、および簡単な説明の一覧を次の表に示します。

形式

アセンブリ形式

説明

FE 11

endfilter

SEH 例外処理の filter 句を終了します。

スタックの遷移動作を順番に示すと、次のようになります。

  1. value がスタックにプッシュされます。

  2. value がスタックからポップされます。endfilter が実行され、制御が例外ハンドラーに転送されます。

Value が filter 句から返されます。この値は int32 型で、特定の値セットの値の 1 つです。この値は、次のいずれかです。

  • 例外ハンドラーの検索を継続する場合は exception_continue_search (value = 0)。

  • 例外処理の第 2 フェーズを開始して、この filter 句に関連付けられたハンドラーが見つかるまで finally ブロックを実行する場合は exception_execute_handler (value = 1)。ハンドラーが見つかると、そのハンドラーが実行されます。

その他の整数値の場合、結果は不定となります。

メソッドの例外表に示されているように、フィルターのエントリ ポイントは、フィルターのコード ブロック内の最初の命令である必要があります。endfilter 命令は、フィルターのコード ブロック内の最後の命令である必要があります。したがって、フィルター ブロックごとに 1 つの endfilter しか配置できません。endfilter 命令の実行後、制御は論理的には CLI 例外処理機構に戻ります。

例外処理機構を通じて転送される場合を除き、フィルター ブロック内には制御を転送できません。throw 命令を使用する場合、または最後の endfilter 命令を実行する場合を除き、フィルター ブロックからは制御を転送できません。filter ブロック内に try ブロックを埋め込むことはできません。filter ブロックの内部で例外がスローされた場合、その例外はインターセプトされ、値 0 (exception_continue_search) が返されます。

endfilter オペコードを使用できる Emit メソッド オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode)

Windows Phone OS

サポート: 8.0, 7.1

表示: