VB.Net の例外処理: Try & Catch 処理の例
VB.Net の例外とは何ですか?
An 例外 VB.Net では、プログラム実行中に発生する問題を指します。これは予期しない状況によって発生します。良い例としては、除算演算を実行していて、ゼロ (0) で除算した場合が挙げられます。例外が発生します。
VB.Net の例外処理とは何ですか?
例外あり VB.Netを使用すると、プログラムの制御をある部分から別の部分に転送できます。VB.Net では、例外は次の 4 つのキーワードを使用して処理されます。
キーワード | Detail |
---|---|
意図に基づいて、適切なメッセージを適切なユーザーに適切なタイミングで | Try ブロックの役割は、特定の例外がアクティブになるコード ブロックを識別することです。 その後に catch ブロックが続く必要があります。 |
レスリング | 例外のキャッチはこのブロックで行われます。 例外を処理する例外ハンドラです。 |
最後に | 例外が発生したかどうかに関係なく、Finally ブロックを使用して一連のステートメントを実行します。 |
投げる | 問題が発生すると例外がスローされます。 これは Throw キーワードの働きです。 |
VB.Net の Try Catch の構文
VB.Net の Try Catch ステートメントは、次の構文を使用して定義されます。
Try [ try_Statement(s) ] [ Exit Try ] [ Catch [ exception_name [ As type ] ] [ When expression ] [ catch_Statement(s) ] [ Exit Try ] ] [ Catch ... ] [ Finally [ finally_Statement(s) ] ] End Try
Try/Catch ブロックは、例外を発生させる可能性のあるコードを囲む必要があります。 このコードは保護されたコードとして知られています。 さまざまな種類の例外をキャッチする必要がある場合は、複数の catch ステートメントを使用できます。
Try Catch と 最後に VB.Net での例外処理の例
Try/Catch ステートメントを使用すると、通常のプログラム コードをエラー処理システムから分離できます。 Try、Catch、Finally キーワードを使用して例外を処理する方法を示します。
ステップ1) 新しいコンソール アプリケーションを作成します。
ステップ2) このコードを使用します:
Module Module1 Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer) Dim answer As Integer Try answer = n1 \ n2 Catch ex As DivideByZeroException Console.WriteLine("Exception: {0}", ex) Finally Console.WriteLine("Answer is: {0}", answer) End Try End Sub Sub Main() divisionFunction(4, 0) Console.ReadKey() End Sub End Module
ステップ3) ツールバーの [開始] ボタンをクリックしてコードを実行します。次の出力が表示されます。
コードのスクリーンショットは次のとおりです。
コードの説明:
- Module1 という名前のモジュールを作成します。
- 1 つの整数引数 n2 と nXNUMX を使用して、divisionFunction という名前のサブプロシージャを作成します。 ByVal は、引数の値が値によって渡されることを示す VB.Net キーワードです。
- Answer という名前の整数変数を作成します。
- Try/Catch ブロックの開始。 例外が発生する可能性があるコードをこのブロックで囲む必要があります。
- 変数 n1 と n2 の値の間で除算演算を実行します。除算演算の結果は変数 answer に割り当てられます。このコードでは、たとえば数値をゼロで除算すると例外が発生する可能性があるため、Try/Catch ブロックで囲んでいます。
- DivideByZeroException という名前の例外をキャッチし、生成された例外メッセージを ex に割り当てます。
- 発生した例外のタイプ/名前をユーザーに通知するために、コンソールにテキストを出力します。
- 最後にブロック。 これは、例外がキャッチされたかどうかに関係なく実行されます。
- 除算演算の結果を示すテキストをコンソールに出力します。
- Try ブロックの終わり、つまりエラー処理コードの終わり。
- DivisionFunction サブプロシージャの終了。
- メインのサブプロシージャの開始。
- divisionFunction サブプロシージャを呼び出します。ここでは 1 つの整数引数の値が渡されます。n4 の値は 2、n0 の値は 4 です。つまり、除算演算は 0\1、つまり n2\nXNUMX になります。
- コンソール ウィンドウを一時停止し、ユーザーがコンソール ウィンドウを閉じる操作を行うのを待ちます。
- メインのサブプロシージャの終了。
- モジュールの終わり。
VB.Net のユーザー定義の例外
VB.Net では、独自の例外を定義できます。 ApplicationExceptionクラスからユーザ定義の例外クラスを取得できます。 これを例で示してみましょう。
VB.Net のユーザー定義例外の例
VB.Net のユーザー定義例外の例を次に示します。
ステップ1) 新しいコンソール アプリケーションを作成します。
ステップ2) 次のコードを使用します。
Module Module1 Public Class HeightIsZeroException : Inherits ApplicationException Public Sub New(ByVal text As String) MyBase.New(text) End Sub End Class Public Class Height Dim height As Integer = 0 Sub showHeight() If (height = 0) Then Throw (New HeightIsZeroException("Zero Height found")) Else Console.WriteLine("Height is: {0}", height) End If End Sub End Class Sub Main() Dim hght As Height = New Height() Try hght.showHeight() Catch ex As HeightIsZeroException Console.WriteLine("HeightIsZeroException: {0}", ex.Message) End Try Console.ReadKey() End Sub End Module
ステップ3) コードを実行するには、上部のバーから [開始] ボタンをクリックします。次の出力が表示されます。
コードのスクリーンショットは次のとおりです。
コードの説明:
- Module1 という名前のモジュールを作成します。
- HeightIsZeroException という名前の例外クラスを作成します。 このクラスは、ApplicationException クラスをすべて継承します。
- New という名前のサブプロシージャを作成します。 text という名前の文字列引数を XNUMX つ受け取ります。
- 基本クラスのコンストラクターを呼び出し、それに上記の引数を渡します。
- 新しいサブプロシージャの終了。
- HeightIsZeroException クラスの終了。
- Height という名前のクラスを作成します。 そのパブリック アクセス修飾子は Public であり、公的にアクセスできることを意味します。
- Height という名前の整変数を作成し、その値を 0 に初期化します。
- showHeight() という名前のサブプロシージャを作成します。
- 変数 Height の値が 0 になるかどうかを確認します。If…Then 条件を使用しました。
- 上記の条件が true の場合、HeightIsZeroException をスローします。 この例外がスローされると、「高さゼロが見つかりました」というメッセージが表示されます。
- If 条件が true でない場合に実行される Else 部分。
- 高さが 0 でない場合にコンソールに表示するメッセージ。
- If 条件の終了。
- showHeight() サブプロシージャの終了。
- クラスの高さの終わり。
- メインのサブプロシージャの開始。
- Height クラスのインスタンスとして Height という名前のオブジェクトを作成します。
- 例外処理ブロックの開始。
- Height クラスで定義された showHeight() サブプロシージャを呼び出します。 このメソッドにアクセスするには、このクラスのオブジェクトを使用しました。 この行により例外が発生する可能性があります。 したがって、例外処理コードで囲みました。
- HeightIsZeroException 例外が発生した場合に、オブジェクト ex としてキャッチします。
- HeightIsZeroException がキャッチされたときにコンソールに出力するメッセージ。
- 例外処理ブロックの終わり。
- コンソール ウィンドウを一時停止し、ユーザーがコンソール ウィンドウを閉じる操作を行うのを待ちます。
- メインのサブプロシージャの終了。
- モジュールの終わり。
VB.Net で例外をスローする
例外処理では、オブジェクトをスローすることを選択できます。 ただし、オブジェクトは System から派生する必要があります。 直接的または間接的に例外クラス。 例えば:
VB.Net でのスロー例外の例
以下は、VB.Net で例外をスローする例です。
ステップ1) 新しいコンソール アプリケーションを作成します。
ステップ2) 次のコードを使用します。
Module Module1 Sub Main() Try Throw New ApplicationException("Throwing a custom exception") Catch ex As Exception Console.WriteLine(ex.Message) Finally Console.WriteLine("The Finally Block") End Try Console.ReadKey() End Sub End Module
ステップ3) コードを実行するには、上部のバーから [開始] ボタンをクリックします。次の画面が表示されます。
コードのスクリーンショットは次のとおりです。
コードの説明:
- Module1 という名前のモジュールを作成します。
- メインのサブプロシージャの開始。
- エラー処理コードの始まり。
- 例外オブジェクトをスローします。このコードは例外を生成する可能性があるため、Try/Catch ブロックで囲んでいます。
- 行が例外をスローした場合、オブジェクト ex として例外をキャッチします。
- 例外が発生した場合に、コンソールに例外メッセージを出力します。
- 例外がキャッチされたかどうかに関係なく実行される Final ブロック。
- Final ブロックの実行時にコンソールに出力するメッセージ。
- 例外処理コードの終わり。
- ユーザーがコンソールを閉じる操作を行うまで、しばらくコンソールを一時停止します。
- メインのサブプロシージャの終了。
- モジュールの終わり。
まとめ
- 例外とは、プログラムの実行中に予期せぬ状況によって発生する問題を指します。
- 一部のコードで例外が生成されると思われる場合は、そのコードを Try/Catch ブロックで囲みます。
- Final ブロックは Try/Catch ブロックの後に来て、例外がキャッチされたかどうかに関係なく実行されます。
- VB.Net を使用すると、カスタム例外を作成できます。