VB.NETの例外処理でよくあるアンチパターンと注意点を初心者向けに徹底解説
生徒
「VB.NETの例外処理って便利そうですが、使い方を間違えると良くないって聞きました」
先生
「その通りです。特によくある失敗の形、つまりアンチパターンを知ることが大切です」
生徒
「アンチパターンって何ですか?初心者でも気をつけたほうがいいですか?」
先生
「初心者ほど知っておくと安心です。順番に具体例を見ていきましょう」
1. アンチパターンとは何か
アンチパターンとは、一見すると正しそうに見えるけれど、実は後から問題が起きやすい書き方や考え方のことです。料理で例えると、味は一時的に良くても、体に悪い調理方法のようなものです。
VB.NETの例外処理では、動くけれど「読みにくい」「遅くなる」「原因が分からなくなる」書き方が多く見られます。
2. Catchで何もしないアンチパターン
Try
Dim x As Integer = 10 \ 0
Catch ex As Exception
' 何もしない
End Try
この書き方は非常によく見かけますが、危険です。エラーが起きても画面には何も表示されず、問題が隠れてしまいます。
例えるなら、火災報知器が鳴っているのに、電源を切って気づかないふりをするような状態です。
3. すべてExceptionで受け取るアンチパターン
Try
Dim numbers() As Integer = {1, 2, 3}
Console.WriteLine(numbers(5))
Catch ex As Exception
Console.WriteLine("エラーが起きました")
End Try
Exceptionはすべてのエラーの親のような存在です。何が起きたのか分からなくなり、原因調査が難しくなります。
初心者のうちは詳細な種類分けは難しいですが、「何が起きたかを表示する」意識だけでも大切です。
4. 例外処理を条件分岐の代わりに使うアンチパターン
Try
Dim text As String = Nothing
Console.WriteLine(text.Length)
Catch ex As Exception
Console.WriteLine("文字がありません")
End Try
これは事前にチェックすれば防げるエラーです。毎回例外を起こすのは、わざと転んでから立ち上がるようなものです。
VB.NETでは、If文で確認できることは、先に確認するのが基本です。
5. Finallyに重たい処理を書くアンチパターン
Try
Console.WriteLine("処理中")
Catch ex As Exception
Console.WriteLine("エラー")
Finally
System.Threading.Thread.Sleep(3000)
End Try
Finallyは必ず実行されます。ここに時間のかかる処理を書くと、正常時でも動作が遅くなります。
掃除だけする場所に、引っ越し作業を入れてしまうようなものです。
6. 例外メッセージをそのまま表示する注意点
ex.Messageをそのまま表示すると、専門的すぎて初心者や利用者には意味が分かりません。
また、内部情報が表示されることで、セキュリティ面の問題につながることもあります。人に見せるメッセージと、開発者が確認する情報は分けて考える必要があります。
7. Tryの範囲が広すぎるアンチパターン
Tryブロックが大きすぎると、「どこでエラーが起きたか」が分かりにくくなります。
初心者は「この行でエラーが起きそう」という最小限の範囲にTryを書く意識を持つと、読みやすいコードになります。
8. 初心者が覚えておくべき例外処理の心構え
VB.NETの例外処理は、エラーを隠すためのものではありません。問題を安全に受け止め、原因を見つけやすくするための仕組みです。
アンチパターンを避け、「なぜここで例外処理を書くのか」を考えることで、読みやすく安心できるプログラムになります。