Name des Programms:
unexpectedExceptionHandler
Beschreibung:
Die lib löst ein Event aus wenn ein unerwarteter Fehler auftritt. In diesem Event wird dann der Fehler zum weiterverarbeiten zur verfügung gestellt, um dort z.B. eine Meldung an den Benutzer auszugeben.
Ist "ExitApplicationOnError" auf False gesetzt so läuft die Anwendung nach auftreten eines Fehlers weiter (nicht zu empfehlen da die Anwendung dann meist in einem ungültigem Zustand ist.)
Das Programm ist nicht dazu gedacht jegliche Fehlermeldungen abzufangen und das Programm unter allen Umständen am laufen zu halten.
Des weiteren enthällt die lib noch 2 Extension-Methods mit deren Hilfe man Zeile und Datei in der die Ausnahme aufgetreten ist herausfinden kann. (Diese beiden Mothoden wurden allerdings noch nicht wirklich auf Fehler getested und es kann hier noch zu fehlern kommen)
Extension-Methods:
und
Screenshot(s):
Keine da lib
Verwendete Programmiersprache:
Visual Basic .NET (IDE: VB 2010 Express)
Systemanforderungen:
.NET Framework 3.5 Client Profile
3.5 auf Grund der Extension-Methods
Lizenz/Weitergabe:
Opensource (Source folgt wenn ich diese noch überarbeitet und ein wenig aufgehübscht hab)
Anwendungsbeispiel:
//Edit hier mal der sourcecode: (wie gesagt ist nicht viel und war hauptsächlich für mich selbst entwickelt)
unexpectedExceptionHandler
Beschreibung:
Die lib löst ein Event aus wenn ein unerwarteter Fehler auftritt. In diesem Event wird dann der Fehler zum weiterverarbeiten zur verfügung gestellt, um dort z.B. eine Meldung an den Benutzer auszugeben.
Ist "ExitApplicationOnError" auf False gesetzt so läuft die Anwendung nach auftreten eines Fehlers weiter (nicht zu empfehlen da die Anwendung dann meist in einem ungültigem Zustand ist.)
Das Programm ist nicht dazu gedacht jegliche Fehlermeldungen abzufangen und das Programm unter allen Umständen am laufen zu halten.
Des weiteren enthällt die lib noch 2 Extension-Methods mit deren Hilfe man Zeile und Datei in der die Ausnahme aufgetreten ist herausfinden kann. (Diese beiden Mothoden wurden allerdings noch nicht wirklich auf Fehler getested und es kann hier noch zu fehlern kommen)
Extension-Methods:
und
Screenshot(s):
Keine da lib
Verwendete Programmiersprache:
Visual Basic .NET (IDE: VB 2010 Express)
Systemanforderungen:
.NET Framework 3.5 Client Profile
3.5 auf Grund der Extension-Methods
Lizenz/Weitergabe:
Opensource (Source folgt wenn ich diese noch überarbeitet und ein wenig aufgehübscht hab)
Anwendungsbeispiel:
VB.NET-Quellcode
- 'So könnte eine mögliche Anwendung aussehen
- Private Sub ErrorHandler_ExceptionOccurred(Sender As Object, e As System.Exception) Handles ErrorHandler.ExceptionOccurred
- MessageBox.Show("Ein unerwarteter Fehler ist aufgetreten: " & e.Message, "Unerwarteter Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
- End Sub
//Edit hier mal der sourcecode: (wie gesagt ist nicht viel und war hauptsächlich für mich selbst entwickelt)
VB.NET-Quellcode
- Imports System.ComponentModel
- Imports System.Runtime.CompilerServices
- Imports System.Text.RegularExpressions
- ''' <summary>
- ''' Klasse zum behandeln unerwarteter Fehler
- ''' </summary>
- Public Class ExceptionHandler
- ''' <summary>
- ''' Gibt an ob die Anwendung bei Auftreten eines Fehlers beendet werden soll.
- ''' </summary>
- <DefaultValue(False)> Public Property ExitApplicationOnError
- ''' <summary>
- ''' Tritt auf wenn eine unbehandelte Ausnahme auftritt.
- ''' </summary>
- ''' <param name="Sender">Die Methode in der der Fehler auftrat (vom Type System.Reflection.MethodeBase)</param>
- ''' <param name="e">Die Ausnahme als Exception</param>
- ''' <remarks></remarks>
- Public Event ExceptionOccurred(ByVal Sender As Object, ByVal e As Exception)
- Private currentDomain As AppDomain
- Public Sub New()
- currentDomain = AppDomain.CurrentDomain
- End Sub
- ''' <summary>
- ''' Startet das Errorhandling
- ''' </summary>
- Public Sub EnableErrorHandling()
- AddHandler currentDomain.UnhandledException, AddressOf internEXHandler
- AddHandler Application.ThreadException, AddressOf internThreadEXHandler
- End Sub
- ''' <summary>
- ''' Beendet das Errorhandling
- ''' </summary>
- Public Sub DisableErrorHandling()
- RemoveHandler currentDomain.UnhandledException, AddressOf internEXHandler
- RemoveHandler Application.ThreadException, AddressOf internThreadEXHandler
- End Sub
- Private Sub internEXHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs)
- Dim EX As Exception = CType(e.ExceptionObject, Exception)
- RaiseEvent ExceptionOccurred(EX.TargetSite, EX)
- If ExitApplicationOnError Then Application.Exit()
- End Sub
- Private Sub internThreadEXHandler(ByVal sender As Object, ByVal e As Threading.ThreadExceptionEventArgs)
- Dim EX As Exception = e.Exception
- RaiseEvent ExceptionOccurred(EX.TargetSite, EX)
- If ExitApplicationOnError Then Application.Exit()
- End Sub
- End Class
- Public Module ExceptionExtension
- <Extension()> _
- Public Function GetLineOfError(ByVal EX As Exception) As Integer
- Dim ST As New StackTrace(EX, True)
- Return ST.GetFrame(0).GetFileLineNumber()
- End Function
- <Extension()> _
- Public Function GetFileOfError(ByVal EX As Exception) As String
- Dim ST As New StackTrace(EX, True)
- Return ST.GetFrame(0).GetFileName
- End Function
- End Module
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Wulf“ ()