VBのTry...Catch構文について
Visual Basic(VB)における Try...Catch構文 は、プログラム実行中に発生するエラー(例外)を安全に処理するための制御構文です。ファイル操作や数値変換、通信など、失敗の可能性がある処理には必ずTry...Catch構文を使うことが推奨されます。
基本構文
Try
' エラーが起こる可能性のある処理
Catch ex As Exception
' エラーが発生したときの処理
Finally
' 最後に必ず実行される処理(省略可能)
End Try
例:
Try
Dim num As Integer = CInt("abc") ' 数値変換でエラー
Catch ex As Exception
MsgBox("エラーが発生しました:" & ex.Message)
Finally
MsgBox("後処理を実行します")
End Try
複数のCatchブロックを使う
エラーの種類に応じて処理を分けたい場合、複数のCatchを使うことができます。
Try
Dim x As Integer = Integer.Parse("abc")
Catch ex As FormatException
MsgBox("形式が正しくありません")
Catch ex As OverflowException
MsgBox("値が大きすぎます")
Catch ex As Exception
MsgBox("その他のエラー:" & ex.Message)
End Try
Finallyブロックについて
Finally
ブロックは、エラーの有無に関係なく最後に必ず実行される処理を記述します。ファイルのクローズや後処理などに使われます。
例外情報の取得
ex.Message
でエラーメッセージを取得でき、ex.StackTrace
でエラー発生箇所の詳細も確認できます。
Throwでエラーを再スローする
Catchブロックで一度処理したあと、他の場所にエラーを再通知したい場合は Throw
を使います。
Catch ex As Exception
' ログだけ記録し、再スロー
LogError(ex.Message)
Throw
End Try
Try構文の使いどころ
- 文字列を数値に変換(CInt, Integer.Parse など)
- ファイルの読み書き
- 配列の範囲外アクセス
- 外部データベースやAPIとの通信
実用例:ファイル読み込み
Try
Dim text As String = My.Computer.FileSystem.ReadAllText("data.txt")
MsgBox(text)
Catch ex As IO.FileNotFoundException
MsgBox("ファイルが見つかりません")
Catch ex As Exception
MsgBox("予期しないエラー:" & ex.Message)
Finally
MsgBox("処理が終了しました")
End Try
まとめ
Try...Catch構文 は、VBプログラムの信頼性を高めるために不可欠なエラーハンドリング手法です。例外の内容に応じて適切なCatchブロックを用意し、必要に応じてFinallyやThrowを組み合わせることで、安全で堅牢なアプリケーションを構築できます。