Improve Error Handler

This commit is contained in:
Jonathan Jenne 2019-03-05 14:47:10 +01:00
parent d93d9142ff
commit 311516fc9f

View File

@ -1,22 +1,34 @@
Imports DigitalData.Modules.Logging Imports System.Reflection
Imports DigitalData.Modules.Logging
Public Class ClassErrorHandler Public Class ClassErrorHandler
Private _Logger As Logger Private _Logger As Logger
Private Const UNKNOWN_METHOD = "Unknown Method"
Private Const UNKNOWN_FORM = "Unknown Form"
Public Sub New(Logger As Logger) Public Sub New(Logger As Logger)
_Logger = Logger _Logger = Logger
End Sub End Sub
Private Function GetMessage(Exception As Exception) Private Function GetMessage(Exception As Exception)
Dim oTargetSite = Exception.TargetSite Dim oTargetSite = Exception.TargetSite
Dim oMethodName = oTargetSite.ReflectedType.Name Dim oMethodName = GetMethodName(Exception)
Dim oFormName = oTargetSite.ReflectedType.ReflectedType.Name Dim oFormName = GetFormName(Exception)
Dim oMessage As String = String.Empty Dim oMessage As String = String.Empty
oMessage &= $"Form: {oFormName}{vbNewLine}" oMessage &= $"Form: {oFormName}{vbNewLine}"
oMessage &= $"Method: {oMethodName}{vbNewLine}" oMessage &= $"Method: {oMethodName}{vbNewLine}"
oMessage &= $"{Exception.Message}{vbNewLine}"
oMessage &= $"{Exception.StackTrace}{vbNewLine}{vbNewLine}" If Not String.IsNullOrEmpty(Exception.StackTrace) Then
oMessage &= $"Message: {Exception.Message}{vbNewLine}{vbNewLine}"
End If
If Not String.IsNullOrEmpty(Exception.StackTrace) Then
oMessage &= $"Stacktrace: {Exception.StackTrace}{vbNewLine}"
End If
oMessage &= $"{vbNewLine}"
oMessage &= $"Please report this error to error@digitaldata.works" oMessage &= $"Please report this error to error@digitaldata.works"
Return oMessage Return oMessage
@ -26,4 +38,24 @@ Public Class ClassErrorHandler
_Logger.Error(Exception) _Logger.Error(Exception)
MsgBox(GetMessage(Exception), MsgBoxStyle.Critical, "Unexpected Error") MsgBox(GetMessage(Exception), MsgBoxStyle.Critical, "Unexpected Error")
End Sub End Sub
Private Function GetMethodName(Exception As Exception) As String
Dim oMethodName = Exception.TargetSite?.ReflectedType?.Name
If oMethodName Is Nothing Then
Return UNKNOWN_METHOD
Else
Return oMethodName
End If
End Function
Private Function GetFormName(Exception As Exception) As String
Dim oFormName = Exception.TargetSite?.ReflectedType?.ReflectedType?.Name
If oFormName Is Nothing Then
Return UNKNOWN_FORM
Else
Return oFormName
End If
End Function
End Class End Class