次の方法で共有


OpCodes.Endfilter フィールド

例外の filter 句から Common Language Infrastructure (CLI) 例外ハンドラに制御を転送します。

Public Shared ReadOnly Endfilter As OpCode
[C#]
public static readonly OpCode Endfilter;
[C++]
public: static OpCode Endfilter;
[JScript]
public static var Endfilter : OpCode;

解説

命令の 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 を 1 つしか置けません。 endfilter 命令の実行後、制御は、論理的には CLI 例外処理機構に戻ります。

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

endfilter オペコードを使用できる Emit コンストラクタ オーバーロードを次に示します。

  • ILGenerator.Emit(OpCode)

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

OpCodes クラス | OpCodes メンバ | System.Reflection.Emit 名前空間