現在 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 ブロックを使用して例外をキャッチする