方法: エラー発生時に制御を継続する (Visual Basic)
構造化例外処理に対して Try...Catch...Finally ステートメント (Visual Basic) 構造を使用できます。 これにより、コードの実行中に特定の例外が発生した場合に特定のステートメント ブロックを実行できます。 このように例外が発生することをコードが例外をスローすると言い、スローされた例外を Catch ステートメントで処理することを例外をキャッチすると言います。
コードによって例外が発生した場合に一連のステートメントを実行するには
Try...Catch...Finally 構造を使用して、例外を引き起こす可能性のあるコードを囲みます。 次に、例外が発生した場合に実行するコードを指定し、任意で、Try...Catch...Finally 構造から制御が移る前に実行する一連のステートメントを指定します。
次の例では、Object 変数 givenDate で提供される値からちょうど 100 年後の日時を計算しています。
Dim givenDate As Object Dim nextCentury As Date Try nextCentury = Microsoft.VisualBasic.DateAdd("yyyy", 100, givenDate) Catch thisExcep As System.ArgumentOutOfRangeException ' The resulting date/time is later than December 31, 9999. Catch thisExcep As System.ArgumentException ' At least one argument has an invalid value. Catch thisExcep As System.InvalidCastException ' The value in givenDate cannot be interpreted as a date/time. Catch ' An unforeseen exception has occurred. Finally ' This block is always run before leaving the Try structure. End Try
最初の 3 つの Catch ブロックは、DateAdd 関数から予測可能な例外を処理します。 予期しない例外は、最後の Catch ブロックで処理できます。
どのような場合でも、Try...Catch...Finally 構造から制御が移る前に、必ず最後に Finally ブロックで最後のコードが実行されます。 Try または Catch ブロックで、オブジェクトまたはデータベース接続などのリソースを作成するまたは開く場合、必要に応じて Finally ブロックを使用してこれらを閉じたり、破棄したりできます。
例外変数 thisExcep が、Dim などの宣言ステートメントで指定されていない場合は、As 句を持つ Catch ステートメントが宣言として機能します。
参照
処理手順
方法: 制御構造から制御を移す (Visual Basic)
方法: 1 つ以上の条件に基づいてステートメントを実行する (Visual Basic)
方法: 式を複数の値と比較する (Visual Basic)