VB.Net/Development/Exception Stack

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

Display Exception Stack Trace

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

Inner Exception Demo

Imports System
Imports System.Text
Imports System.Text.RegularExpressions

Public Class MainClass
         Shared Sub Main(  )
                 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(  )
                 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(  )
                 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(  )
                 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