VB.Net Tutorial/Development/Predefined Exception
Содержание
An overflow exception occurred
<source lang="vbnet">Module Module1
Sub Main() Dim intItem1 As Integer = 0 Dim intItem2 As Integer = 128 Dim intResult As Integer Try intResult = intItem2 / intItem1 Console.WriteLine("The answer is ", intResult) Console.WriteLine("Press Enter to continue...") Console.ReadLine() Catch Console.WriteLine("An overflow exception occurred.") End Try End Sub
End Module</source>
An overflow exception occurred.
Catch ApplicationException and ArgumentException
<source lang="vbnet">Option Strict On Public Module Tester
Public Sub Main() Try RoutineA() Catch e As Exception Console.WriteLIne("Main error handler: " & e.Message) End Try End Sub Private Sub RoutineA() Try Throw New ApplicationException Catch e As ApplicationException Console.WriteLine("Exception in RoutineA: " & e.Message) End Try Try Throw New ArgumentException Catch e As ApplicationException Console.WriteLine("Exception in RoutineA: " & e.Message) End Try Console.WriteLine("About to exit RoutineA.") End Sub
End Module</source>
Exception in RoutineA: Error in the application. Main error handler: Value does not fall within the expected range.
Catch EndOfStreamException
<source lang="vbnet">Imports System.IO public class Tester
public Shared Sub Main Dim Stream As IO.StreamReader = IO.File.OpenText("test.txt") Try Console.WriteLine(Stream.ReadLine()) Catch e As EndOfStreamException Console.WriteLine("EndOfStreamException") Catch e As IOException Console.WriteLine(e.Message) Finally Stream.Close() End Try End Sub
End class</source>
Catch FormatException
<source lang="vbnet">Public Class Tester
Public Shared Sub Main Try Dim numerator As Integer = Convert.ToInt32("123") Dim denominator As Integer = Convert.ToInt32("321") Dim result As Integer = numerator \ denominator Console.WriteLine(result) Catch formattingException As FormatException Console.WriteLine("You must enter two integers") Catch dividingException As DivideByZeroException Console.WriteLine(dividingException.Message) End Try End Sub
End Class</source>
0
InvalidCastException
<source lang="vbnet">Option Strict On Public Module ThrowStatement
Public Function GetEvenNumber() As Integer Dim inputString As String = "asdf" Throw New InvalidCastException("Unable to convert "" & inputString & "" to an integer") Return 0 End Function
Public Sub Main Try Console.WriteLine(GetEvenNumber()) Catch e As InvalidCastException Console.WriteLine(e.GetType().Name & ": " & e.Message) Catch e As Exception Console.WriteLine(e.GetType().Name & ": " & e.Message) End Try End Sub
End Module</source>
InvalidCastException: Unable to convert "asdf" to an integer
System.Data.ConstraintException
<source lang="vbnet">Imports System.IO public class Tester
public Shared Sub Main Dim y As Integer Dim x As Integer Dim z As Integer Try x = 1 y = 0 z = x / y Catch e As DivideByZeroException Console.WriteLine("You have attempted to divide by zero!") y = 2 z = x / y Catch e As OverflowException Console.WriteLine("You have encountered an overflow exception. ") y = 2 z = x / y Catch e As System.Data.ConstraintException Console.WriteLine("You have encountered a constraint exception. ") y = 2 z = x / y Finally Console.WriteLine(x & "/" & y & " = " & z) End Try End Sub
End class</source>
You have encountered an overflow exception. 1/2 = 0
Throw ArgumentOutOfRangeException
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Public Class Tester
Public Shared Sub Main Dim number As Decimal number = CDec(Val("123.123")) Console.WriteLine("Factorial(" & number & ")... ") Console.WriteLine(Factorial(number)) End Sub Public Shared Function Factorial(ByVal number As Decimal) As Decimal Select Case number Case Is < 0 Throw New ArgumentOutOfRangeException( _ "Negative numbers not allowed.") Case Is = 0 Return 1 Case Else Return number * Factorial(number - 1) End Select End Function
End Class</source>
Factorial(123.123)... Unhandled Exception: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: Negative numbers not allowed. at Tester.Factorial(Decimal number)
Throw ArithmeticException
<source lang="vbnet">Module Module1
Sub Main() Try AddNumbers(1, 2) Catch Except As Exception Console.WriteLine("Call generated error: " & Except.Message) End Try End Sub Function AddNumbers(ByVal A As Integer, ByVal B As Integer) As Integer Try Throw New ArithmeticException() Catch Except As Exception Console.WriteLine(Except.Message) End Try End Function
End Module</source>
Overflow or underflow in the arithmetic operation.
Throw DivideByZeroException
<source lang="vbnet">Module Module1
Sub Main() Try DoMod(1, 2) Catch Except As Exception Console.WriteLine("Call generated error: " & Except.Message) End Try End Sub Function DoMod(ByVal A As Integer, ByVal B As Integer) As Integer Try Throw New DivideByZeroException() Catch Except As Exception Console.WriteLine(Except.Message) End Try End Function
End Module</source>
Attempted to divide by zero.