VB.Net/Development/Exception Catch

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

Catch an Exception

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions Public Class MainClass

   Shared Sub Main(ByVal args As String())
            Console.WriteLine("Enter Run...")
            Func1( )
            Console.WriteLine("Exit Run...")
   End Sub
   
        Shared Public Sub Func1( )
            Console.WriteLine("Enter Func1...")
            Func2( )
            Console.WriteLine("Exit Func1...")
        End Sub "Func1
        Shared Public Sub Func2( )
            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 "Func2

End Class

      </source>


Catch an Exception in function and find out the logic flow

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions

Public Class MainClass

        Shared Sub Main(  )
            Console.WriteLine("Enter Main...")
            Console.WriteLine("Enter func1...")
            Try
                Console.WriteLine("Entering Try block...")
                Func2(  )
                Console.WriteLine("Exiting Try block...")
            Catch
                Console.WriteLine("Exception caught and handled")
            End Try
            Console.WriteLine("Exit func1...")
            Console.WriteLine("Exit Main...")
        End Sub "Main
        Shared Public Sub Func2(  )
            Console.WriteLine("Enter Func2...")
            Throw New System.Exception(  )
            Console.WriteLine("Exit Func2...")
        End Sub "Func2
  

End Class


      </source>


Catch Exception outside its Function

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions Public Class MainClass

   Shared Sub Main(ByVal args As String())
            Console.WriteLine("Enter Run...")
            Func1( )
            Console.WriteLine("Exit Run...")
   End Sub
   
        Shared Public Sub Func1( )
            Console.WriteLine("Enter func1...")
            Try
                Console.WriteLine("Entering Try block...")
                Func2( )
                Console.WriteLine("Exiting Try block...")
            Catch
                Console.WriteLine("Exception caught and handled")
            End Try
            Console.WriteLine("Exit func1...")
        End Sub "Func1
        Shared Public Sub Func2( )
            Console.WriteLine("Enter Func2...")
            Throw New System.Exception( )
            Console.WriteLine("Exit Func2...")
        End Sub "Func2

End Class

      </source>


Catch More than One Exception

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions Public Class MainClass

   Shared Sub Main(ByVal args As String())
            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))
                " most derived exception type first
            Catch e As System.DivideByZeroException
                Console.WriteLine("DivideByZeroException caught!")
            Catch e As System.ArithmeticException
                Console.WriteLine("ArithmeticException caught!")
                " generic exception type last
            Catch
                Console.WriteLine("Unknown exception caught")
            End Try
   End Sub
   
        " do the division if legal
        Shared Public 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

End Class

      </source>


Catch more than one Exception type

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions

Public Class MainClass

        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))
            " most derived exception type first
            Catch e As System.DivideByZeroException
                Console.WriteLine("DivideByZeroException caught!")
            Catch e As System.ArithmeticException
                Console.WriteLine("ArithmeticException caught!")
            " generic exception type last
            Catch
                Console.WriteLine("Unknown exception caught")
            End Try
        End Sub "Main
        Shared Public 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
  

End Class


      </source>


Catch Unknown Exceptions

<source lang="vbnet"> Imports System Imports System.Text Imports System.Text.RegularExpressions

Public Class MainClass

        Shared Sub Main(  )
            Try
                Console.WriteLine("Open file here")
                Dim a As Double = 5
                Dim b As Double = 0
                Console.WriteLine("{0} / {1} = {2}", a, b, DoDivide(a, b))
                Console.WriteLine("This line may or may not print")
            " most derived exception type first
            Catch e As System.DivideByZeroException
                Console.WriteLine("DivideByZeroException caught!")
            Catch
                Console.WriteLine("Unknown exception caught!")
            Finally
                Console.WriteLine("Close file here.")
            End Try
        End Sub "Main
        Shared Public 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
  

End Class


      </source>