カテゴリ: VB.NET 更新日: 2025/12/08

VB.NETのTry-Catch構文と例外処理の基本を徹底解説

VB.NETのTry-Catch構文と例外処理の基本
VB.NETのTry-Catch構文と例外処理の基本

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

生徒

「VB.NETでプログラムがエラーになったときに、処理を安全に止めずに続ける方法ってありますか?」

先生

「あります。それが Try-Catch 構文と呼ばれる例外処理です。プログラムの途中で起こる予期せぬエラーを捕まえて、安全に処理を続けることができます。」

生徒

「Try-Catchって何をどう捕まえるんですか?」

先生

「プログラムでエラーが起こりそうな処理を Try に書き、そのエラーが発生したら Catch で捕まえて処理します。順を追って見ていきましょう。」

1. Try-Catch構文の基本

1. Try-Catch構文の基本
1. Try-Catch構文の基本

VB.NETの Try-Catch は、プログラムの実行中に発生する 例外(エラー) を処理するための構文です。例外とは、0で割ったり、存在しないファイルを開こうとしたりしたときに発生する予期せぬ状況のことです。


Try
    Dim x As Integer = 10
    Dim y As Integer = 0
    Dim result As Integer = x / y
    Console.WriteLine(result)
Catch ex As DivideByZeroException
    Console.WriteLine("0で割ることはできません")
End Try

0で割ることはできません

この例では、0で割ろうとすると DivideByZeroException が発生しますが、Catch が捕まえてエラーを安全に処理しています。

2. 複数の例外を捕まえる

2. 複数の例外を捕まえる
2. 複数の例外を捕まえる

VB.NETでは、複数種類の例外を個別に捕まえることができます。例えば、数値エラーとファイル操作エラーを分けて処理することも可能です。


Try
    Dim number As Integer = Convert.ToInt32("abc")
Catch ex As FormatException
    Console.WriteLine("数字に変換できません")
Catch ex As Exception
    Console.WriteLine("その他のエラーです")
End Try

数字に変換できません

ここでは FormatException が発生すると特定のメッセージを表示し、それ以外の例外は一般的に処理することができます。

3. Finallyで後処理を行う

3. Finallyで後処理を行う
3. Finallyで後処理を行う

Finally ブロックを使うと、例外が発生しても必ず実行したい処理を書けます。例えば、ファイルを閉じる処理などです。


Dim file As System.IO.StreamReader = Nothing

Try
    file = My.Computer.FileSystem.OpenTextFileReader("sample.txt")
    Dim line As String = file.ReadLine()
    Console.WriteLine(line)
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("ファイルが見つかりません")
Finally
    If file IsNot Nothing Then file.Close()
End Try

ファイルが見つかりません

この例では、ファイルが存在しなくても Finally 内で必ずファイルを閉じる処理が行われ、安全にリソースを解放できます。

4. 例外処理の活用ポイント

4. 例外処理の活用ポイント
4. 例外処理の活用ポイント
  • Try-Catchでエラーを捕まえると、プログラムが途中で停止せずに続行できる
  • エラーの種類に応じて個別に処理することで、ユーザーにわかりやすいメッセージを表示できる
  • Finallyを使えば、リソースの解放や後処理が必ず実行される
  • 例外処理は、ファイル操作、数値計算、データベース操作など安全性が重要な処理で特に役立つ

VB.NETの Try-Catch 構文を正しく使うことで、エラーに強い、安全で安定したプログラムを作ることができます。プログラム初心者でも、例外処理を理解することでトラブルを未然に防ぎ、ユーザー体験を向上させることが可能です。

5. Try-Catchでユーザーに優しいメッセージを表示する

5. Try-Catchでユーザーに優しいメッセージを表示する
5. Try-Catchでユーザーに優しいメッセージを表示する

例外処理を使うと、エラーが発生した際にプログラムが止まるだけでなく、ユーザーにわかりやすいメッセージを表示することができます。例えば、数値入力の変換エラーやファイル操作エラーに対して具体的なメッセージを出すことで、ユーザーが原因を理解しやすくなります。


Try
    Dim input As String = "xyz"
    Dim number As Integer = Convert.ToInt32(input)
Catch ex As FormatException
    Console.WriteLine("入力された値は数字ではありません")
Catch ex As Exception
    Console.WriteLine("予期せぬエラーが発生しました")
End Try

入力された値は数字ではありません

この例では、ユーザーが数字以外の文字を入力した場合、FormatException を捕まえて適切なメッセージを出力しています。その他の例外も一般的に処理され、プログラムが安定して動作します。

6. ネストしたTry-Catchの活用方法

6. ネストしたTry-Catchの活用方法
6. ネストしたTry-Catchの活用方法

場合によっては、Try-Catchの中にさらにTry-Catchを入れることがあります。ネストした例外処理を行うことで、特定の処理ごとにエラーを詳細に管理できます。複雑なプログラムやファイル操作、データベース操作では特に有効です。


Try
    Try
        Dim x As Integer = 10
        Dim y As Integer = 0
        Dim result As Integer = x / y
    Catch ex As DivideByZeroException
        Console.WriteLine("内側のTry: 0で割ることはできません")
    End Try
Catch ex As Exception
    Console.WriteLine("外側のTry: その他のエラーです")
End Try

内側のTry: 0で割ることはできません

この例では、内側のTryで発生したゼロ除算エラーを捕まえ、外側のTryではその他のエラーを処理する構造になっています。これにより、複雑な処理でもエラー管理がしやすくなります。

7. Try-Catchでプログラムの安定性を高める

7. Try-Catchでプログラムの安定性を高める
7. Try-Catchでプログラムの安定性を高める

VB.NETの例外処理は、プログラムの安全性や安定性を高めるために不可欠です。ユーザーの操作や外部リソースの不具合など、予期せぬ状況に対応することで、プログラムの信頼性を向上させることができます。特に初心者でも、Try-Catchを正しく活用することで、途中で止まらない安定したプログラムを書くことができます。


Try
    Dim file As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader("data.txt")
    Dim line As String = file.ReadLine()
    Console.WriteLine(line)
Catch ex As System.IO.FileNotFoundException
    Console.WriteLine("ファイルが存在しません")
Catch ex As Exception
    Console.WriteLine("不明なエラーが発生しました")
Finally
    Console.WriteLine("プログラム処理が終了しました")
End Try

ファイルが存在しません
プログラム処理が終了しました

この例では、ファイルの有無に応じてエラーを捕まえ、Finallyで必ず終了メッセージを表示しています。Try-Catchを正しく使用することで、エラーが発生してもプログラムを安全に進行させることが可能です。

まとめ

まとめ
まとめ

本記事では、VB.NETの Try-Catch 構文を中心に、例外処理の基本から応用まで解説しました。プログラム実行中に発生する予期せぬエラーは、ファイル操作や数値計算、データベース操作など、あらゆる場面で発生する可能性があります。Try ブロックに危険性のある処理を書き、エラーが発生した場合には Catch ブロックで適切に捕まえることで、プログラムを安全に続行できます。複数の例外を個別に処理する方法や、Finally ブロックで必ず後処理を実行する方法も学びました。

具体的には、0で割る処理や文字列から数値への変換、存在しないファイルの読み込みなど、日常的に起こり得るエラーに対して、プログラムが途中で停止することなく安定して動作する仕組みを理解しました。Catch によって例外を種類ごとに処理することで、ユーザーにわかりやすく安全なメッセージを表示できる点も重要です。また、Finally を活用することで、リソースの解放やファイルのクローズなど、後処理が確実に行われるため、プログラムの信頼性が大幅に向上します。

サンプルプログラムの振り返り


Try
    Dim numbers As String() = {"10", "0", "abc"}
    For Each s As String In numbers
        Dim n As Integer = Convert.ToInt32(s)
        Console.WriteLine(100 / n)
    Next
Catch ex As DivideByZeroException
    Console.WriteLine("ゼロで割ることはできません")
Catch ex As FormatException
    Console.WriteLine("数字に変換できません")
Catch ex As Exception
    Console.WriteLine("その他のエラーです")
Finally
    Console.WriteLine("処理が終了しました")
End Try

数字に変換できません
処理が終了しました

このサンプルでは、文字列配列の中で数値変換や0除算が発生する可能性がある処理を安全に実行し、エラーごとに適切なメッセージを表示し、最後には必ず終了メッセージを出力しています。これにより、プログラムの安定性とユーザーへのフィードバックを両立させることができます。

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

生徒

「今回のTry-Catchの学習で、どんなことができるようになったんですか?」

先生

「まず、プログラムが途中でエラーで止まらずに続行できるようになりました。そして、エラーの種類に応じて異なる処理を行えることも理解できました。」

生徒

「Finallyブロックはどうして必要なんですか?」

先生

「エラーの有無に関わらず必ず実行したい処理を書けるからです。例えばファイルを開いた後は必ず閉じる必要がありますよね。Finallyはそのために使います。」

生徒

「なるほど。複数のCatchを使えば、特定のエラーにだけ対応することもできるんですね。」

先生

「その通りです。DivideByZeroExceptionやFormatExceptionなど、エラーの種類に応じて処理を分ければ、ユーザーによりわかりやすいメッセージを表示できます。これが安定したプログラムを作るポイントです。」

生徒

「Try-Catchを理解すると、初心者でも安全で安定したプログラムを書けるんですね。」

先生

「そうです。これを応用すれば、ファイル操作や数値計算、データベース処理など、さまざまな場面でエラーに強いプログラムを作れるようになります。」

カテゴリの一覧へ
新着記事
New1
VB.NET
VB.NETの例外処理とは?基本の考え方を完全ガイド!初心者でも安心して理解できる
New2
VB.NET
VB.NETのオブジェクト指向でよくあるエラーと解決法を完全ガイド!初心者がつまずかない考え方
New3
ASP.NET
ASP.NET MVCアプリを公開・デプロイする手順を完全解説!初心者でも失敗しにくい入門ガイド
New4
VB.NET
VB.NETのオブジェクト指向設計のベストプラクティス完全ガイド!初心者でも失敗しない設計の考え方
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETのIf文の使い方と条件分岐を完全ガイド!初心者でもわかる基本構文と実例
No.2
Java&Spring記事人気No2
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETで名前空間を整理する方法を完全ガイド!初心者でもわかるNamespaceの基本
No.4
Java&Spring記事人気No4
VB.NET
VB.NETでGenericsクラスを使う方法を完全ガイド!初心者でもわかるジェネリック入門
No.5
Java&Spring記事人気No5
VB.NET
VB.NETのPartialクラスでコードを分割管理する方法を完全ガイド!初心者でもわかる部分クラスの考え方
No.6
Java&Spring記事人気No6
VB.NET
VB.NETのデストラクタとDisposeを完全ガイド!初心者でもわかるオブジェクトの後片付け
No.7
Java&Spring記事人気No7
VB.NET
VB.NETのSelect Caseで文字列・数値を判定する方法を初心者向けに解説
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの将来性は?初心者でもわかるMicrosoftのロードマップの読み解き方