VB.Net/Development/Exception Stack

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

Display Exception Stack Trace

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

   Shared Sub Main(ByVal args As String())
       Dim stack_trace As New System.Diagnostics.StackTrace(True)
       For i As Integer = 0 To stack_trace.FrameCount - 1
           With stack_trace.GetFrame(i)
               Console.WriteLine("Method: " & .GetMethod().ToString & _
               ", File: "" & _
               .GetFileName() & _
               "", Line: " & .GetFileLineNumber() )
           End With
       Next i
   End Sub

End Class

      </source>


Inner Exception Demo

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

Public Class MainClass

        Shared Sub Main(  )
            Try
                DangerousFunc1(  )
            Catch e As MyCustomException
                Console.WriteLine(ControlChars.Lf + "{0}", e.Message)
                Console.WriteLine("Retrieving exception history...")
                Dim inner As Exception = e.InnerException
                While Not (inner Is Nothing)
                    Console.WriteLine("{0}", inner.Message)
                    inner = inner.InnerException
                End While
            End Try
        End Sub "Main
        Shared Public Sub DangerousFunc1(  )
            Try
                DangerousFunc2(  )
            Catch e As System.Exception
                Dim ex As New MyCustomException( _
                 "E3 - Custom Exception Situation!", e)
                Throw ex
            End Try
        End Sub
        Shared Public Sub DangerousFunc2(  )
            Try
                DangerousFunc3(  )
            Catch e As System.DivideByZeroException
                Dim ex As New Exception( _
                    "E2 - Func2 caught divide by zero", e)
                Throw ex
            End Try
        End Sub "DangerousFunc2
        Shared Public Sub DangerousFunc3(  )
            Try
                DangerousFunc4(  )
            Catch e As System.ArithmeticException
                Throw e
            Catch e As System.Exception
                Console.WriteLine("Exception handled here!")
            End Try
        End Sub "DangerousFunc3
        Shared Public Sub DangerousFunc4(  )
            Throw New DivideByZeroException("E1 - DivideByZero Exception")
        End Sub
  

End Class

    Public Class MyCustomException
        Inherits System.ApplicationException
        Public Sub New(ByVal message As String, ByVal inner As Exception)
            MyBase.New(message, inner)
        End Sub "New
    End Class "MyCustomException
          
      </source>