【入門編】初心者向け:VB.NETの例外処理(Try-Catch-Finally)の正しい書き方と、エラー発生時にアプリケーションをクラッシュさせないためのログ出力の基本 – Visual Basic (VB / VB.NET)解析バイブル

スポンサーリンク

現場で生き残るための「例外処理」:VB.NETで堅牢なアプリを作る極意

こんにちは。現場で長年、数多のシステムトラブルを鎮火してきたエンジニアです。

皆さんが書いたコードが、ユーザーの手元で「突然パタリと落ちる」。これほど恐ろしいことはありません。なぜアプリは落ちるのか? それは、「起こるはずのないエラー」に対して無防備だからです。

今回は、VB.NETの「例外処理(Try-Catch-Finally)」を単なる構文としてではなく、「アプリケーションを守る盾」として使いこなすための極意を伝授します。

1. なぜ「例外処理」が必要なのか?

プログラムは、人間が想定していない状況(ファイルがない、ネットワークが切れた、数値変換できない等)に遭遇すると、パニックを起こして強制終了します。これを「例外(Exception)」と呼びます。

例外処理とは、「エラーが起きたら、クラッシュする代わりに、こう対処しなさい」という緊急避難マニュアルをコードに書く作業です。

2. Try-Catch-Finally:緊急避難の三箇条

この構文は、以下の3つの役割に分解できます。

1. Try: 「ここでエラーが起きるかもしれない」という危険地帯を囲む。
2. Catch: 「エラーが起きたらこうする」という救済措置を書く。
3. Finally: 「成功しようが失敗しようが、最後に必ずやる」後始末を書く。

実践的なコード例

Public Sub ProcessFile(filePath As String)
Dim fileReader As System.IO.StreamReader = Nothing

Try
‘ 【Try】危険地帯:ファイルを開く処理(存在しない場合、ここで例外発生)
fileReader = New System.IO.StreamReader(filePath)
Console.WriteLine(fileReader.ReadToEnd())

Catch ex As Exception
‘ 【Catch】救済措置:エラーの内容をログに記録し、ユーザーに優しく通知
‘ ex.Messageには具体的なエラー内容が入っています
LogError(“ファイル読み込み中にエラー発生: ” & ex.Message)
MessageBox.Show(“ファイルの読み込みに失敗しました。ファイルを確認してください。”)

Finally
‘ 【Finally】後始末:エラーの有無に関わらず、開いたファイルは必ず閉じる
If fileReader IsNot Nothing Then
fileReader.Close()
‘ リソースの解放は職人技の基本です
End If
End Try
End Sub

3. 「ログ出力」はエンジニアの黒歴史を救う命綱

初心者の方ほど、「エラーが起きたらメッセージボックスを出すだけ」で満足してしまいます。しかし、「何が起きたか」という記録(ログ)がないと、後からなぜ落ちたのか誰も証明できません。

業務アプリでは、最低限以下の情報を残すのが鉄則です。

  • いつ(日時): 発生時刻
  • どこで(メソッド名): どの処理で詰まったか
  • なぜ(例外内容): なぜ失敗したのか(ex.ToString() で詳細なスタックトレースを記録)

簡易的なログ出力メソッドの例

Private Sub LogError(message As String)
‘ 簡易的にテキストファイルへ追記する実装例
Dim logPath As String = “C:\Logs\ErrorLog.txt”
Dim logContent As String = DateTime.Now.ToString(“yyyy/MM/dd HH:mm:ss”) & ” – ” & message

‘ 実際に現場ではNLogやlog4netなどのロギングライブラリを使うのが定石です
System.IO.File.AppendAllText(logPath, logContent & Environment.NewLine)
End Sub

4. 陥りやすい罠:やってはいけない「空のCatch」

初心者がやりがちな最大のミスがこれです。

Try
‘ 危険な処理
Catch ex As Exception
‘ 何もしない!
End Try

これは、「泥棒が入ったのに、わざと目隠しをして見なかったことにする」のと同じです。エラーが起きてもアプリは止まりませんが、データが壊れたり、原因不明のまま放置されたりするため、後で必ず大きな代償を払うことになります。

Catch句の中には、必ず「何らかの対応(ログ出力やユーザーへの通知)」を記述してください。

最後に:例外処理は「優しさ」です

例外処理を丁寧に書くことは、単にバグを防ぐことではありません。「もしエラーが起きても、ユーザーを路頭に迷わせない」という開発者としての優しさです。

  • Tryで危険を囲い、
  • Catchでログに真実を刻み、
  • Finallyで後腐れなく後片付けをする。

このサイクルを身につければ、あなたの書くVB.NETコードは、驚くほど安定したものに変わります。ここをクリアすれば、もうあなたは初心者ではありません。自信を持って、堅牢なシステムを構築していきましょう!

タイトルとURLをコピーしました