VB.Net Tutorial/Development/Try Catch — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 16:40, 26 мая 2010

Catch custom exception

Public Class MyException
    Inherits System.Exception
    Sub New(ByVal Message As String)
        MyBase.New(Message)
    End Sub
End Class

Public Class Tester
    Public Shared Sub Main
        Try
            Console.WriteLine("About to generate custom exception")
            Throw (New MyException("** Custom Message **"))
        Catch Ex As MyException
            Console.WriteLine("Custom Exception thrown " & Ex.Message)
        End Try
    End Sub
End Class
About to generate custom exception
Custom Exception thrown ** Custom Message **

Catch different Exception with multiple catch statements

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
You have encountered an overflow exception.
1/2 = 0

Catch Exception throwed from a Method

Option Strict On
 Imports System
 Class Tester
     Shared Sub Main( )
         Console.WriteLine("Enter func1...")
         Try
             Console.WriteLine("Entering Try block...")
             Func1( )
             Console.WriteLine("Exiting Try block...")
         Catch
             Console.WriteLine("Exception caught and handled")
         End Try
         Console.WriteLine("Exit func1...")
     End Sub
     Public Shared Sub Func1( )
         Console.WriteLine("Enter Func2...")
         Throw New System.Exception( )
         Console.WriteLine("Exit Func2...")
     End Sub
 End Class
Enter func1...
Entering Try block...
Enter Func2...
Exception caught and handled
Exit func1...

Catch specific Exception from a Method

Imports System
 Class Tester
     Public Shared Function DoDivide(ByVal a As Double, ByVal b As Double) As Double
         If b = 0 Then
             Throw New System.DivideByZeroException( )
         End If
         If a = 0 Then
             Throw New System.ArithmeticException( )
         End If
         Return a / b
     End Function
     Public Shared Sub Main( )
         Try
             Dim a As Double = 5
             Dim b As Double = 0
             Console.WriteLine("Dividing {0} by {1}...", a, b)
             Console.WriteLine("{0} / {1} = {2}",a, b, DoDivide(a, b))
         Catch e As System.DivideByZeroException
             Console.WriteLine("DivideByZeroException caught!")
         Catch e As System.ArithmeticException
             Console.WriteLine("ArithmeticException caught!")
         Catch
             Console.WriteLine("Unknown exception caught")
         End Try
     End Sub
 End Class
Dividing 5 by 0...
DivideByZeroException caught!

Catch without Exception type

public class Test
   public Shared Sub Main
        Dim strCaption As String
        strCaption = "Answer"
        Try
            Console.WriteLine(strCaption.Substring(10, 1))
        Catch
            Console.WriteLine("An error has occurred.")
        End Try

   End Sub
End class
An error has occurred.

Filtered Exception

Option Strict Off
Public Module Tester 
   Public Sub Main
      Dim a, b As Integer
      Try
         
         a = 0
         b = 0
         a = a/b
      Catch e As DivideByZeroException When a = 0
         Console.WriteLine("Division by zero error: " & _
                          "the first divisor must not be zero.")
      Catch e As DivideByZeroException When b = 0
         Console.WriteLine("Division by zero error: " & _
                           "the second divisor must not be zero.")
      Catch e As Exception
         Console.WriteLine("Error: " & e.Message)
      End Try
   End Sub
End Module
Error: Arithmetic operation resulted in an overflow.

Try Catch Exception

Option Strict On
 Imports System
 Class Tester
     Shared Sub Main( )
         Console.WriteLine("Enter Func2...")
         Try
             Console.WriteLine("Entering Try block...")
             Throw New System.Exception( )
             Console.WriteLine("Exitintg Try block...")
         Catch
             Console.WriteLine("Exception caught and handled")
         End Try
        Console.WriteLine("Exit func2...")
     End Sub "Main
 End Class "Tester
Enter Func2...
Entering Try block...
Exception caught and handled
Exit func2...