VB.Net/Development/Exception Stack — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 19:40, 26 мая 2010
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>