次の方法で共有


ユーザー フィルタ例外ハンドラの使用

更新 : 2007 年 11 月

現在 Visual Basic では、ユーザー フィルタ例外をサポートしています。ユーザー フィルタ例外ハンドラは、独自に定義された例外の条件に基づいて例外をキャッチおよび処理します。これらのハンドラでは、Catch ステートメントを When キーワードと一緒に使用します。

特定の例外オブジェクトが複数のエラーに対応するときにこの手法を使用すると便利です。通常、このような例外オブジェクトには、エラーに関連付けられた特定のエラー コードが格納されているプロパティがあります。Catch 句で処理する特定のエラーだけを選択するには、エラー コード プロパティを使用した式を作成します。

When キーワードが指定された Catch ステートメントを次の Visual Basic コード例に示します。

Try
      'Try statements.
   Catch When Err = VBErr_ClassLoadException
      'Catch statements.
End Try

ユーザー フィルタ句の式が制限されることはありません。ユーザー フィルタ式の実行中に例外が発生すると、その例外は破棄され、そのフィルタ式は false と評価されたと見なされます。この場合、共通言語ランタイムでは、現在の例外に対応するハンドラの検索が継続されます。

特定の例外とユーザー フィルタ句の組み合わせ

catch ステートメントには、特定の例外とユーザー フィルタ句の両方を記述できます。ランタイムでは、特定の例外が最初にテストされます。特定の例外がテストを通過すると、次にユーザー フィルタが実行されます。汎用フィルタには、クラス フィルタで宣言されている変数への参照を含めることができます。2 つのフィルタ句の順序は一定であり、変更できないことに注意してください。

ClassLoadException という例外が指定された Catch ステートメントと、When キーワードを使用したユーザー フィルタ句の Visual Basic コード例を次に示します。

Try
      'Try statements.
   Catch cle As ClassLoadException When cle.IsRecoverable()
      'Catch statements.
End Try

参照

処理手順

方法 : Try ブロックと Catch ブロックを使用して例外をキャッチする

方法 : catch ブロックで特定の例外を使用する

概念

例外処理の実施

その他の技術情報

例外処理の基本事項