Common: Improve BaseForms and ErrorHandler

This commit is contained in:
Jonathan Jenne 2021-04-26 16:31:41 +02:00
parent 72e639dc0c
commit 18786bee33
4 changed files with 77 additions and 12 deletions

View File

@ -14,9 +14,14 @@ Namespace Base
_Form = Form
End Sub
Public Sub ShowErrorMessage(Exception As Exception)
Public Sub ShowErrorMessage(Exception As Exception, Origin As String)
Dim oMessage = GetMessage(Exception, Origin)
ShowErrorMessage(Exception, Origin, oMessage)
End Sub
Public Sub ShowErrorMessage(Exception As Exception, Origin As String, Message As String)
_Logger.Error(Exception)
MessageBox.Show(GetMessage(Exception), _Form.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
MessageBox.Show(Message, _Form.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Sub
Public Sub ShowInfoMessage(Text As String)
@ -24,8 +29,7 @@ Namespace Base
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)
Private Function GetMessage(Exception As Exception, Origin As String) As String
Dim oMessage As String = String.Empty
If TypeOf Exception Is SqlClient.SqlException Then
@ -37,13 +41,13 @@ Namespace Base
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."
oMessage = $"An unhandled exception occurred in {Origin}: " & vbNewLine &
Exception.Message & vbNewLine & vbNewLine &
"More information can be found in the Application 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 & "=== Debug Information ==="
oMessage &= vbNewLine & vbNewLine & "Stacktrace:"
oMessage &= vbNewLine & Exception.StackTrace
End If

View File

@ -0,0 +1,51 @@

Imports DevExpress.XtraEditors
Imports DigitalData.Modules.Logging
Namespace Base
Public Class BaseForm
Inherits XtraForm
Private ReadOnly _Logger As Logger
Private ReadOnly _ErrorHandler As BaseErrorHandler
Protected ReadOnly Property Logger As Logger
Get
Return _Logger
End Get
End Property
Public Sub New()
End Sub
Public Sub New(LogConfig As LogConfig)
' Get the full name of the inheriting form
' so the log messages have the right classname
Dim oClassName = [GetType]().FullName
' My.LogConfig is undefined in the designer
_Logger = LogConfig.GetLogger(oClassName)
_ErrorHandler = New BaseErrorHandler(LogConfig, _Logger, Me)
' When you add something, be careful if it
' depends on a global var like My.LogConfig
' you might need to check for its existence with ?
End Sub
''' ============== PUBLIC METHODS ==============
Public Sub ShowInfoMessage(Message As String)
_ErrorHandler.ShowInfoMessage(Message)
End Sub
Public Sub ShowErrorMessage(Exception As Exception)
Dim oCallingClass = LogConfig.GetClassFullName(IncludeMethodNames:=True, Parts:=2)
_ErrorHandler.ShowErrorMessage(Exception, oCallingClass)
End Sub
Public Sub ShowErrorMessage(ErrorMessage As String)
Dim oCallingClass = LogConfig.GetClassFullName(IncludeMethodNames:=True, Parts:=2)
_ErrorHandler.ShowErrorMessage(New ApplicationException(ErrorMessage), oCallingClass)
End Sub
End Class
End Namespace

View File

@ -5,14 +5,16 @@ Imports DigitalData.Modules.Logging
Namespace Base
''' <summary>
''' This BaseClass is used to provide common functionality like the Logger or ErrorHandler to all Forms
''' To use it, create a form and change the `Inherits` statement in FormName.Designer.vb to this form, eg.:
''' </summary>
''' <example>
''' To use it, create a form and change the `Inherits` statement in FormName.Designer.vb to this form.
'''
''' Partial Class frmExample
''' Inherits BaseRibbonForm
'''
''' ...
''' End Class
''' </summary>
''' </example>
Public Class BaseRibbonForm
Inherits RibbonForm
@ -43,13 +45,18 @@ Namespace Base
End Sub
''' ============== PUBLIC METHODS ==============
Public Sub ShowInfoMessage(Message As String)
_ErrorHandler.ShowInfoMessage(Message)
End Sub
Public Sub ShowErrorMessage(Exception As Exception)
_ErrorHandler.ShowErrorMessage(Exception)
Dim oCallingClass = LogConfig.GetClassFullName(IncludeMethodNames:=True, Parts:=2)
_ErrorHandler.ShowErrorMessage(Exception, oCallingClass)
End Sub
Public Sub ShowErrorMessage(ErrorMessage As String)
_ErrorHandler.ShowErrorMessage(New ApplicationException(ErrorMessage))
Dim oCallingClass = LogConfig.GetClassFullName(IncludeMethodNames:=True, Parts:=2)
_ErrorHandler.ShowErrorMessage(New ApplicationException(ErrorMessage), oCallingClass)
End Sub
End Class
End Namespace

View File

@ -89,6 +89,9 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Base\BaseErrorHandler.vb" />
<Compile Include="Base\BaseForm.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="Base\BaseResult.vb" />
<Compile Include="Base\BaseRibbonForm.vb">
<SubType>Form</SubType>