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

VB.NETのThrow文で独自の例外を発生させる方法をわかりやすく解説

VB.NETのThrow文で独自の例外を発生させる方法
VB.NETのThrow文で独自の例外を発生させる方法

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

生徒

「VB.NETでプログラムがうまく動かない時、自分でエラーを作って処理を止めることってできますか?」

先生

「できます。そのときに使うのが Throw 文です。自分で定義した例外を発生させることができます。」

生徒

「どんな場面で使うんですか?」

先生

「例えば、入力された値が想定外の場合にエラーとして通知したいときや、処理を中断したいときに使います。」

1. Throw文の基本

1. Throw文の基本
1. Throw文の基本

VB.NETの Throw 文は、プログラム内で自分で例外を発生させるための構文です。通常は Try-Catch と組み合わせて使用し、例外処理を安全に行うことができます。例外とは、プログラムの実行中に予期せぬ事態が起きたことを示す信号のようなものです。


Try
    Dim number As Integer = -5
    If number < 0 Then
        Throw New Exception("数値が負の値です")
    End If
Catch ex As Exception
    Console.WriteLine("エラー: " & ex.Message)
End Try

エラー: 数値が負の値です

この例では、変数 number が負の場合、Throw 文で例外を発生させ、Catch で捕まえてメッセージを表示しています。

2. 独自の例外クラスを作る方法

2. 独自の例外クラスを作る方法
2. 独自の例外クラスを作る方法

より細かく例外を管理したい場合、独自の例外クラスを作ることができます。独自例外は、標準の Exception クラスを継承して作ります。


' 独自例外クラスの作成
Public Class NegativeNumberException
    Inherits Exception
    Public Sub New(message As String)
        MyBase.New(message)
    End Sub
End Class

' 独自例外を発生させる
Try
    Dim number As Integer = -10
    If number < 0 Then
        Throw New NegativeNumberException("負の値は禁止です")
    End If
Catch ex As NegativeNumberException
    Console.WriteLine("独自例外: " & ex.Message)
End Try

独自例外: 負の値は禁止です

独自例外を作ることで、エラーの種類をより具体的に区別でき、複雑なプログラムでも安全に処理を制御できます。

3. Throw文の使い方で覚えておくポイント

3. Throw文の使い方で覚えておくポイント
3. Throw文の使い方で覚えておくポイント
  • Throw 文で例外を発生させる
  • 標準の Exception を使うか、独自例外クラスを作るか選択可能
  • Try-Catch と組み合わせると安全に例外処理できる
  • エラーを通知したい場面や、想定外の値が入った場合に活用
  • プログラムの信頼性を高めるために重要

初心者でも Throw 文を使うことで、プログラムの安全性を高めつつ、例外の意味を理解して適切に処理できるようになります。

4. Throw文を条件分岐と組み合わせる

4. Throw文を条件分岐と組み合わせる
4. Throw文を条件分岐と組み合わせる

Throw文は、条件分岐と組み合わせて使うことで、特定の条件に達した場合のみ例外を発生させることができます。これにより、想定外の値や不正な状態を検知してプログラムを安全に停止させることが可能です。


Try
    Dim score As Integer = 120
    If score > 100 Then
        Throw New Exception("点数が100を超えています")
    End If
Catch ex As Exception
    Console.WriteLine("エラー: " & ex.Message)
End Try

エラー: 点数が100を超えています

この例では、変数 score が100を超えた場合に例外を発生させています。条件分岐とThrowを組み合わせることで、意図しないデータが処理されるのを防ぎます。

5. 複数の独自例外を使い分ける

5. 複数の独自例外を使い分ける
5. 複数の独自例外を使い分ける

複雑なプログラムでは、状況に応じて複数の独自例外を用意すると便利です。各例外に意味を持たせることで、エラー発生時の処理をより明確に分けられます。


' 例外クラスを複数作成
Public Class NegativeValueException
    Inherits Exception
    Public Sub New(message As String)
        MyBase.New(message)
    End Sub
End Class

Public Class ZeroValueException
    Inherits Exception
    Public Sub New(message As String)
        MyBase.New(message)
    End Sub
End Class

Try
    Dim number As Integer = 0
    If number < 0 Then
        Throw New NegativeValueException("負の値は禁止です")
    ElseIf number = 0 Then
        Throw New ZeroValueException("ゼロは許可されていません")
    End If
Catch ex As NegativeValueException
    Console.WriteLine("独自例外: " & ex.Message)
Catch ex As ZeroValueException
    Console.WriteLine("独自例外: " & ex.Message)
End Try

独自例外: ゼロは許可されていません

このように、複数の独自例外を作ることで、どの条件でエラーが発生したのかを明確に判別でき、処理を柔軟に分けることができます。

6. Throw文とTry-Catchでプログラムの安定性を確保する

6. Throw文とTry-Catchでプログラムの安定性を確保する
6. Throw文とTry-Catchでプログラムの安定性を確保する

Throw文は、Try-Catchと組み合わせることで、プログラムの途中で発生する想定外の状況に対応できます。これにより、プログラムが途中で止まることなく、エラーを適切に処理することが可能です。


Try
    Dim fileName As String = "data.txt"
    If Not System.IO.File.Exists(fileName) Then
        Throw New Exception("ファイルが存在しません")
    End If
    Dim file As System.IO.StreamReader = My.Computer.FileSystem.OpenTextFileReader(fileName)
    Console.WriteLine(file.ReadLine())
Catch ex As Exception
    Console.WriteLine("エラー: " & ex.Message)
Finally
    Console.WriteLine("プログラム処理が終了しました")
End Try

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

この例では、ファイルが存在しない場合にThrowで例外を発生させ、Catchで処理しています。Finallyで終了メッセージを表示することで、どのような場合でもプログラムの安定性を確保できます。

まとめ

まとめ
まとめ

本記事では、VB.NETの Throw 文を活用した例外処理の基本から応用までを詳しく解説しました。プログラム実行中に発生する予期せぬエラーを自分で発生させることで、処理を意図的に制御し、安全で安定したプログラムを構築する方法を学びました。特に、標準の Exception クラスを使った簡単な例外の発生から、独自の例外クラスを作成してより細かくエラーを管理する方法までを紹介しました。

Throw 文を使用すると、入力値のチェックや処理の途中で想定外の状態を検知した際に、自分で例外を発生させることができます。これにより、ユーザーにわかりやすく具体的なエラーメッセージを提示でき、プログラムの安全性と信頼性を向上させることができます。さらに Try-Catch と組み合わせることで、エラーを捕まえて安全に処理を続行することも可能です。

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


' 数値が負の場合に例外を発生させる
Try
    Dim value As Integer = -8
    If value < 0 Then
        Throw New Exception("値が負です")
    End If
Catch ex As Exception
    Console.WriteLine("エラー: " & ex.Message)
End Try

' 独自例外を作って発生させる例
Public Class CustomException
    Inherits Exception
    Public Sub New(message As String)
        MyBase.New(message)
    End Sub
End Class

Try
    Dim number As Integer = -15
    If number < 0 Then
        Throw New CustomException("負の値は禁止です")
    End If
Catch ex As CustomException
    Console.WriteLine("独自例外: " & ex.Message)
End Try

エラー: 値が負です
独自例外: 負の値は禁止です

このサンプルでは、標準例外と独自例外の両方を使って、プログラムの途中で想定外の値を検知し、安全に処理を中断してエラーを通知する方法を学びました。Throw 文を使うことで、複雑な処理でも安定性を保ちつつ、ユーザーにわかりやすいエラーメッセージを提供できます。

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

生徒

「Throw文って、自分でエラーを作れるんですね。どんな時に使うのが効果的ですか?」

先生

「例えば、入力値が想定外だったときや、特定の条件を満たさない場合に処理を止めたいときに有効です。プログラムの信頼性を高めるために、予期せぬ状況を検知したらすぐに例外を発生させます。」

生徒

「独自の例外クラスも作れるんですね。これって何が便利なんですか?」

先生

「独自例外を使うと、エラーの種類を具体的に分けられるので、複雑なプログラムでもどの処理で何のエラーが発生したのかを明確にできます。ユーザーにもわかりやすいメッセージを出せます。」

生徒

「なるほど。Try-Catchと組み合わせることで、安全にエラー処理ができるんですね。」

先生

「その通りです。Throw文で例外を発生させてCatchで捕まえることで、プログラムを止めずに処理を続けながら、安全にエラーを管理できます。これを理解すると、初心者でも安定したプログラムを作れるようになります。」

カテゴリの一覧へ
新着記事
New1
ASP.NET
ASP.NETのクロスサイトスクリプティング(XSS)を完全解説!初心者でもわかる仕組みと対策
New2
VB.NET
VB.NETの文字列置換を完全解説!初心者でもわかるReplaceメソッドの使い方
New3
ASP.NET
ASP.NETのセキュリティ対策を完全ガイド!初心者でもわかるXSS・CSRF・SQLインジェクションの基本
New4
VB.NET
VB.NETで文字列を検索する方法をマスター!IndexOfとContainsの使い方を初心者向けに徹底解説
人気記事
No.1
Java&Spring記事人気No1
VB.NET
VB.NETで文字列を連結する方法を完全ガイド!&演算子とString.Concatの使い方
No.2
Java&Spring記事人気No2
VB.NET
VB.NETのコレクション操作でよくあるエラーと解決策!初心者向けトラブル脱出ガイド
No.3
Java&Spring記事人気No3
VB.NET
VB.NETの配列(Array)の作り方と基本操作を徹底解説!初心者でもわかる入門ガイド
No.4
Java&Spring記事人気No4
VB.NET
VB.NETの文字列操作を完全ガイド!初心者が覚えるべき基本と宣言方法
No.5
Java&Spring記事人気No5
ASP.NET
ASP.NET MVCでセッションを使う方法を完全解説!初心者でもわかる状態管理入門
No.6
Java&Spring記事人気No6
ASP.NET
ASP.NETの認証と認可の違いを完全解説!初心者でもわかるOAuth・JWT・Azure ADの基本
No.7
Java&Spring記事人気No7
VB.NET
VB.NETでコレクションをソートする方法を完全ガイド!並び替えの基本
No.8
Java&Spring記事人気No8
ASP.NET
ASP.NETの認証の仕組みを完全解説!初心者でもわかるログインの基本