VB.NET 例外処理のサンプル(try…catchとthrow)

VB.NETの例外処理のサンプルです。
try...catch構文とthrow文と独自の例外の作成についてです。

目次

try...catch構文

try {
   実行する処理
} catch ( 例外のクラス 変数 ) {
   実行する処理
} finally{
 実行する処理
}

コード

try...catch構文のコードです。

Module Module1
    Sub Main()
        Dim num1 As Integer = 4
        Dim num2 As Integer = 0

        Try
            Dim ans As Integer = calc1(num1, num2)
        Catch ex As ArithmeticException
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("処理が終了しました")
        End Try

    End Sub

    Private Function calc1(num1 As Integer, num2 As Integer)
        Return num1 / num2
    End Function
End Module

6行目は、例外が起こる可能性がある関数をtryブロックで囲んでいます。
17行目は、0で割るためArithmeticExceptionの例外が発生します。
8行目は、例外をcatchしメッセージを表示します。「算術演算の結果オーバーフローが発生しました。」
10行目は、finallyブロックでメッセージが表示されます。「処理が終了しました」

throw文

throw new 例外

コード

throw文のサンプルです。

Module Module1
    Sub Main()
        Dim num1 As Integer = 1

        Try
            Dim ans As Integer = calc1(num1)
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("処理が終了しました")
        End Try

    End Sub

    Private Function calc1(num1 As Integer)
        If num1 = 1 Then
            Throw New Exception("エラーを投げます")
        End If
        Return num1
    End Function
End Module

5行目からは、try-catch構文です。
17行目は、throw文で例外を投げています。
7行目は、例外をcatchしメッセージを表示します。「エラーを投げます」
10行目は、finallyブロックでメッセージが表示されます。「処理が終了しました」

独自の例外を作成する

独自の例外を作成するには、Exceptionクラスを継承します。

Module Module1
    Sub Main()
        Dim num1 As Integer = 0

        Try
            Dim ans As Integer = calc1(num1)
        Catch ex As TestException
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("終了")
        End Try
    End Sub

    Private Function calc1(num1 As Integer)
        If (num1 = 0) Then
            Throw New TestException("独自例外")
        End If
        Return num1
    End Function

End Module
Public Class TestException
    Inherits Exception

    Sub New(a As String)
        MyBase.New(a)
    End Sub
End Class

22,23行目で、Exceptionクラスを継承して独自の例外を作成しています。
16行目は、独自のエラーをthrowしています。
26行目のMyBaseは、現在のインスタンスの基底クラスを参照します。
7行目でcatchされ「独自例外」と表示されます。

関連の記事

VB.NET入門 クラスの仕組みとサンプル
VB.NET クラスの継承の仕組みとサンプル

△上に戻る