Imports System.Reflection Imports System.Windows.Forms Imports DigitalData.Modules.Logging Namespace Base Public Class BaseErrorHandler Private _LogConfig As LogConfig Private _Logger As Logger Private _Form As Form Public Sub New(LogConfig As LogConfig, Logger As Logger, Form As Form) _LogConfig = LogConfig _Logger = Logger _Form = Form End Sub Public Sub ShowErrorMessage(Exception As Exception) _Logger.Error(Exception) MessageBox.Show(GetMessage(Exception), _Form.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation) End Sub Public Sub ShowInfoMessage(Text As String) _Logger.Info(Text) MessageBox.Show(Text, _Form.Text, MessageBoxButtons.OK, MessageBoxIcon.Information) End Sub Private Function GetMessage(Exception As Exception) As String Dim oCallingClass = LogConfig.GetClassFullName(IncludeMethodNames:=True, Parts:=2) Dim oMessage As String = String.Empty If TypeOf Exception Is SqlClient.SqlException Then Dim oNumber As Integer = DirectCast(Exception, SqlClient.SqlException).Number Select Case oNumber Case 2627 oMessage = "Es wurde ein Doppelter Wert in eine Spalte eingetragen, die einzigartig sein muss." End Select ElseIf TypeOf Exception Is NoNullAllowedException Then oMessage = "Einige benötigte Felder wurde nicht ausgefüllt." Else oMessage = $"Es ist ein unerwarteter Fehler in {oCallingClass} aufgetreten. Mehr Informationen finden Sie im Log." End If If _LogConfig.Debug Then oMessage &= vbNewLine & vbNewLine & "== Debug Informationen ==" oMessage &= vbNewLine & vbNewLine & "Die ursprüngliche Fehlermeldung lautet:" oMessage &= vbNewLine & Exception.Message oMessage &= vbNewLine & vbNewLine & "Stacktrace:" oMessage &= vbNewLine & Exception.StackTrace End If Return oMessage End Function End Class End Namespace