1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a As Integer = 1, b As Integer = 0
3: Trace.WriteLine(a \ b)
4: End Sub
リスト9-35 On Error GotoステートメントもTryステートメントも使用していないプログラム
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a As Integer = 1, b As Integer = 0
3: Try
4: Trace.WriteLine(a \ b)
5: Catch ex As Exception
6: If TypeOf ex Is DivideByZeroException Then
7: Throw
8: End If
9: Trace.WriteLine(ex.Message)
10: End Try
11: End Sub
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Dim a As Integer = 1, b As Integer = 0
3: Try
4: Try
5: Trace.WriteLine(a \ b)
6: Catch ex As Exception
7: If TypeOf ex Is DivideByZeroException Then
8: Throw
9: End If
10: Trace.WriteLine(ex.Message)
11: End Try
12: Catch ex As DivideByZeroException
13: Trace.WriteLine("0除算をキャッチしました")
14: End Try
15: End Sub
1: Private Sub Form_Load()
2: Err.Raise 11
3: End Sub
リスト9-43 Raiseメソッドによりエラーを自発的に発生させるプログラム
これを実行すると以下のようになる。
●図9-44 リスト9-43の実行結果
さて、これと同じように、自発的に例外を発生させるVB.NETのサンプル・プログラムを以下に
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Throw New DivideByZeroException()
3: End Sub
1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
2: Throw New DivideByZeroException("Throwステートメントにより発生した例外です。")
3: End Sub