カテゴリ: VB.NET 更新日: 2026/02/09

VB.NETのメソッドで例外処理を行う方法を初心者向けに解説

VB.NETのメソッドで例外処理を行う方法
VB.NETのメソッドで例外処理を行う方法

先生と生徒の会話形式で理解しよう

生徒

「先生、VB.NETでメソッドを作るときにエラーが出たらどうすればいいですか?」

先生

「VB.NETには例外処理という仕組みがあります。これを使うと、プログラムの実行中にエラーが起きても、安全に処理を続けることができます。」

生徒

「エラーが起きたら止まっちゃうんじゃないんですか?」

先生

「通常はそうですが、例外処理を使えばエラーをキャッチして別の処理に切り替えられます。これでプログラムがクラッシュするのを防げます。」

1. VB.NETの例外処理とは?

1. VB.NETの例外処理とは?
1. VB.NETの例外処理とは?

VB.NETの例外処理は、プログラムの実行中に起きる予期せぬエラー(例外)を検知して処理する仕組みです。例えば、0で割る計算や存在しないファイルの読み込みは通常エラーになりますが、例外処理を使うとプログラムが止まらずに安全に処理を続けられます。

2. Try...Catch文の基本

2. Try...Catch文の基本
2. Try...Catch文の基本

VB.NETでは、例外処理を行う基本の構文がTry...Catchです。Tryブロック内に危険な処理を書き、エラーが起きた場合はCatchブロックで処理を受け取ります。


Sub DivideNumbers(a As Integer, b As Integer)
    Try
        Dim result As Double = a / b
        Console.WriteLine("結果: " & result)
    Catch ex As DivideByZeroException
        Console.WriteLine("エラー: 0で割ることはできません")
    End Try
End Sub

DivideNumbers(10, 2) ' 結果: 5
DivideNumbers(10, 0) ' エラー: 0で割ることはできません

ここでDivideByZeroExceptionは「0で割ろうとしたときの例外」です。Catchでその種類を指定して処理できます。

3. 複数の例外を処理する

3. 複数の例外を処理する
3. 複数の例外を処理する

複数の例外が考えられる場合は、Catchを連続して書くこともできます。


Sub ReadFile(filePath As String)
    Try
        Dim content As String = System.IO.File.ReadAllText(filePath)
        Console.WriteLine(content)
    Catch ex As System.IO.FileNotFoundException
        Console.WriteLine("エラー: ファイルが見つかりません")
    Catch ex As Exception
        Console.WriteLine("予期せぬエラーが発生しました: " & ex.Message)
    End Try
End Sub

ReadFile("test.txt") ' ファイルが存在しなければエラー処理される

このように特定の例外と一般的な例外を分けて処理することで、安全性が高まります。

4. Finallyブロックの使い方

4. Finallyブロックの使い方
4. Finallyブロックの使い方

Finallyブロックは、例外が発生してもしなくても必ず実行される部分です。例えば、ファイルを開いたあとに必ず閉じたい場合に使います。


Sub ReadFileWithFinally(filePath As String)
    Dim reader As System.IO.StreamReader = Nothing
    Try
        reader = New System.IO.StreamReader(filePath)
        Console.WriteLine(reader.ReadToEnd())
    Catch ex As Exception
        Console.WriteLine("エラーが発生しました: " & ex.Message)
    Finally
        If reader IsNot Nothing Then reader.Close()
        Console.WriteLine("ファイルを閉じました")
    End Try
End Sub

この例では、例外の有無にかかわらず必ずファイルを閉じる処理が行われます。

5. 例外処理のポイントと注意点

5. 例外処理のポイントと注意点
5. 例外処理のポイントと注意点
  • 例外処理は必要な箇所だけに使い、乱用すると可読性が下がる
  • Catchではできるだけ具体的な例外を指定する
  • Finallyはリソース解放など必ず行う処理に使う
  • 例外処理を使っても、根本的なバグは修正することが大切

VB.NETのメソッドで例外処理を適切に使うことで、プログラムの安全性と信頼性を大幅に向上させることができます。

まとめ

まとめ
まとめ

VB.NETにおけるメソッド内の例外処理は、堅牢なシステムを構築する上で欠かせない技術です。これまでに学んできたように、Try...Catch...Finally構文を正しく理解し、適切に使い分けることが、プロフェッショナルなプログラミングへの第一歩となります。

例外処理の重要性とメリット

プログラムを開発していると、どれほど注意深くコードを書いても回避できない事態に遭遇することがあります。例えば、ネットワークの切断、データベースのタイムアウト、あるいはユーザーによる想定外のファイル削除などが挙げられます。こうした「予期せぬエラー」が発生した際、何もしなければアプリケーションは強制終了してしまいます。しかし、例外処理を導入することで、ユーザーに適切なメッセージを表示したり、ログを記録したりして、安全に処理を継続または終了させることが可能になります。

実務で役立つ実装のコツ

実際の開発現場では、ただCatch ex As Exceptionと書くだけでは不十分な場合があります。より高度な例外処理を行うためには、エラーの種類を細かく特定することが推奨されます。例えば、数値計算、入出力処理、データベース操作など、それぞれのコンテキストに応じた例外クラス(InvalidOperationExceptionSqlExceptionなど)を使用することで、デバッグの効率が格段に上がります。

応用的なサンプルプログラム

ここで、もう少し実用的な例を見てみましょう。ユーザーから入力を受け取り、それを数値に変換して計算を行うメソッドを想定します。入力値が数値ではない場合や、値が空の場合など、複数のケースを想定した堅牢なメソッドの書き方です。


''' <summary>
''' ユーザーの入力を数値に変換し、倍にするメソッド
''' </summary>
''' <param name="inputStr">入力文字列</param>
Public Sub ProcessUserInput(inputStr As String)
    Try
        ' 入力チェック
        If String.IsNullOrEmpty(inputStr) Then
            Throw New ArgumentException("入力が空です。")
        End If

        ' 数値変換(失敗すると例外が発生する)
        Dim value As Integer = Integer.Parse(inputStr)
        Dim doubleValue As Integer = value * 2
        
        Console.WriteLine("計算結果: " & doubleValue.ToString())

    Catch ex As ArgumentException
        ' 引数エラーの処理
        Console.WriteLine("入力エラー: " & ex.Message)
    Catch ex As FormatException
        ' 数値変換失敗の処理
        Console.WriteLine("エラー: 数値を入力してください。")
    Catch ex As OverflowException
        ' 数値が大きすぎる場合の処理
        Console.WriteLine("エラー: 入力された数値が大きすぎます。")
    Catch ex As Exception
        ' その他の予期せぬエラー
        Console.WriteLine("未知のエラーが発生しました: " & ex.Message)
    Finally
        ' 常に実行される後処理(ログ出力など)
        Console.WriteLine("処理を終了しました。")
    End Try
End Sub

実行結果の例は以下の通りです。


(「abc」と入力した場合)
エラー: 数値を入力してください。
処理を終了しました。

(何も入力しなかった場合)
入力エラー: 入力が空です。
処理を終了しました。

エラーハンドリングのベストプラクティス

最後に、VB.NETで例外処理を記述する際に意識したいポイントを整理します。

  • 握り潰さない: Catchブロックで何もしない「空のキャッチ」は避けましょう。原因不明のバグを生む原因になります。
  • メッセージの活用: ex.Messageだけでなく、ex.StackTraceを確認することで、エラーが発生した正確な場所を特定できます。
  • 事前チェックとの併用: 例外は処理が重いため、可能な限りIf文などで事前にチェック(ガード句)を入れ、例外が発生する頻度を下げることがパフォーマンス向上に繋がります。

これらの知識を積み重ねることで、ユーザーにとって使いやすく、開発者にとってメンテナンスしやすい高品質なVB.NETアプリケーションを構築できるようになります。エラーを恐れるのではなく、エラーと上手に付き合うコードを目指しましょう。

先生と生徒の振り返り会話

生徒

「先生、まとめまで読んでみて、例外処理の使い道がすごく具体的になりました。ただエラーを防ぐだけじゃなくて、原因を特定するためにも重要なんですね。」

先生

「その通りです。特にFinallyを使って、ファイルやデータベースの接続を確実に閉じるという習慣は、リソース漏れを防ぐために非常に大切ですよ。」

生徒

「さっきのサンプルコードにあったThrowっていうのは何ですか?」

先生

「良いところに気が付きましたね。Throwは、自分で意図的に例外を発生させる命令です。入力値がルールに合わないときに、自分からエラーを投げてCatch側に処理を任せることができるんですよ。」

生徒

「なるほど。自分でエラーを定義して、それをキャッチして制御する。これでプログラムの動きを完全にコントロールできる気がしてきました!」

先生

「素晴らしい意気込みですね。実際のシステム開発では、この例外処理の設計がシステムの品質を左右すると言っても過言ではありません。ぜひ色々なパターンを試して、体得していってください。」

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NET Web APIとMVCの違いを完全解説!初心者でもわかるWebアプリとAPIの基本
New2
ASP.NET
ASP.NET開発環境構築|コマンドライン(dotnet CLI)でASP.NETプロジェクトを作成する方法
New3
VB.NET
VB.NETで文字列を綺麗に整える!String.Formatと文字列補間の使い方
New4
ASP.NET
LinuxでASP.NET Coreを動かす手順|初心者でもわかる開発環境構築ガイド
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのJoinメソッドを徹底解説!バラバラの文字列を一つに結合する方法
No.2
Java&Spring記事人気No2
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
No.4
Java&Spring記事人気No4
VB.NET
VB.NETで文字列結合を高速化!StringBuilderクラスの使い方を完全ガイド
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのDictionaryを完全ガイド!初心者でもわかる辞書の基本と応用
No.6
Java&Spring記事人気No6
VB.NET
VB.NETのList(Of T)の使い方を完全ガイド!初心者が最初に覚えるべきリスト操作
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでStaticメソッドを定義する方法と活用例
No.8
Java&Spring記事人気No8
VB.NET
VB.NETで正規表現をマスター!初心者でもわかる文字列検索・抽出の基本