2004-11-08 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / btests / ExceptionHandlingC.vb
1 \r
2 Imports System\r
3 Imports Microsoft.VisualBasic\r
4 \r
5 Module ExceptionHandlingC\r
6 \r
7     Sub f1()\r
8         On Error GoTo ErrorHandler\r
9         Dim i As Integer = 0\r
10         i = 1 / i\r
11         Console.WriteLine(i)\r
12         Exit Sub\r
13 ErrorHandler:\r
14         Throw New Exception("AA")\r
15         Resume Next\r
16     End Sub\r
17 \r
18     Sub f2()\r
19         On Error GoTo ErrorHandler\r
20         f1()\r
21         Exit Sub\r
22 ErrorHandler:\r
23         If Err.Description <> "AA" Then\r
24             Throw New Exception("#EHC1 - Error statement failed")\r
25         End If\r
26         Resume Next\r
27     End Sub\r
28 \r
29     Sub f3()\r
30         On Error GoTo ErrorHandler\r
31         Throw New DivideByZeroException()\r
32         Exit Sub\r
33 ErrorHandler:\r
34         If Not TypeOf Err.GetException Is DivideByZeroException Then\r
35             Throw New Exception("#EHC2 - Error statement failed")\r
36         End If\r
37         Resume Next\r
38     End Sub\r
39 \r
40     Sub f4()\r
41         On Error GoTo ErrorHandler\r
42         Dim i As Integer = 0\r
43         i = 5 / i\r
44         On Error GoTo 0\r
45         If i <> 1 Then\r
46             Throw New Exception("#EHC3 - Error Statement failed")\r
47         End If\r
48         Exit Sub\r
49 ErrorHandler:\r
50         i = 5\r
51         Resume   ' Execution resumes with the statement that caused the error\r
52     End Sub\r
53 \r
54     Sub f5()\r
55         On Error GoTo ErrorHandler\r
56         Error 6    ' Overflow Exception\r
57         Exit Sub\r
58 ErrorHandler:\r
59         If Err.Number <> 6 Then\r
60             Throw New Exception("#EHC4 - Error Statement failed")\r
61         End If\r
62         Resume Next\r
63     End Sub\r
64 \r
65     Sub f6()\r
66         On Error GoTo ErrorHandler\r
67         Dim i As Integer = 0, j As Integer\r
68         i = 1 / i\r
69 \r
70         On Error GoTo 0  ' Disable error handler\r
71         On Error Resume Next\r
72 \r
73         i = 0\r
74         i = 1 / i ' create error \r
75         If Err.Number = 6 Then  ' handle error\r
76             Err.Clear()\r
77         Else\r
78             Throw New Exception("#EHC5 - Error Statement failed")\r
79         End If\r
80 \r
81         i = 1 / i\r
82         On Error GoTo -1\r
83         If Err.Number <> 0 Then\r
84             Throw New Exception("#EHC6 - Error Statement failed")\r
85         End If\r
86 \r
87         Exit Sub\r
88 ErrorHandler:\r
89         Select Case Err.Number\r
90             Case 6\r
91                 i = 1\r
92             Case Else\r
93                 Throw New Exception("#EHC7 - Error Statement failed")\r
94         End Select\r
95         Resume\r
96     End Sub\r
97 \r
98     Sub Main()\r
99         f2() : f3() : f4() : f5() : f6()\r
100     End Sub\r
101 \r
102 End Module\r
103 \r