VBのエラーハンドリング(Error Handling)について
Visual Basic(VB)における エラーハンドリング(Error Handling) とは、実行中に発生するエラーを適切に処理し、プログラムが途中で停止しないようにするための仕組みです。ファイル読み込みや数値変換など、予期しないトラブルが起こる可能性のある処理では必須となります。
基本構文:Try...Catch...Finally
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ブロックでは、発生した例外を Exception
オブジェクトとして受け取り、内容(ex.Message
)を表示・記録・再処理することができます。
Finallyブロックの使いどころ
Finally
ブロックは、エラーの有無に関わらず最後に必ず実行される処理です。ファイルのクローズやメモリ解放など、後処理に使われます。
特定の例外型を指定する
一般的な Exception
だけでなく、IOException
や FormatException
など、特定の種類の例外だけを捕捉することも可能です。
Try
Dim value As Integer = Integer.Parse("abc")
Catch ex As FormatException
MsgBox("形式が正しくありません")
Catch ex As Exception
MsgBox("その他のエラー:" & ex.Message)
End Try
エラーを自分で発生させる(Throw)
条件に応じて自分でエラーを発生させる場合は Throw
を使います。
If price < 0 Then
Throw New ArgumentException("価格は0以上でなければなりません")
End If
On Error Resume Next(非推奨)
VBでは古くから On Error Resume Next
というエラースキップ方法もありますが、処理の流れがわかりにくくなるため、現在はTry...Catch構文の使用が推奨されています。
実用例:ファイル読み込み時のエラーハンドリング
Try
Dim content As String = My.Computer.FileSystem.ReadAllText("sample.txt")
MsgBox(content)
Catch ex As IO.FileNotFoundException
MsgBox("ファイルが見つかりません")
Catch ex As Exception
MsgBox("エラー:" & ex.Message)
End Try
まとめ
エラーハンドリングは、予期しないトラブルに対する備えとして、信頼性の高いアプリケーションを作成する上で欠かせない技術です。Try...Catch
によって安全に処理を行い、Finally
で後始末を忘れずに実行することで、安定したプログラムを実現できます。