Classe pour récupérer les erreurs dans un fichier xml

Contenu du snippet

Voici encore une classe tout simple qui permet de récupérer les erreurs générées par l'application dans un fichier XML, qui peut ensuite être envoyé par exemple via un webservice, dans une base de données pour que le développeur aie connaissance des erreurs générées par son appli.

Source / Exemple :


Imports System.IO
''' -----------------------------------------------------------------------------
''' Project	 : SIS
''' Class	 : ErrorManager
''' 
''' -----------------------------------------------------------------------------
''' <summary>
''' classe qui a pour objet de récupérer les codes d'erreur 
''' générés lors de l'utilisation de l'application, de les sauvegarder dans un fichier XML
''' et de les renvoyer via le webservice à la base de données distante.
''' Permet d'éviter les messages box tout en restant au courant des erreurs générées par l'application
''' le fichier XML est par défaut dans le même dossier que l'exécutable de l'application.
''' </summary>
''' <remarks>
''' </remarks>
''' <history>
''' 	[Administrateur]	28/04/2006	Created
''' </history>
''' -----------------------------------------------------------------------------
Public Class ErrorManager
#Region "variables privées"
    Private xmlPath As String = Application.StartupPath & "\xml\Errors.xml"
    Private _idError As String
    Private _errorType As String
    Private _errorMessage As String
    Private _errorStackTrace As String
    Private _errorOrigin As String
    Private _errorOwner As String
    Private _errorDate As Date
    Private ds As New DataSet
#End Region
#Region "Accesseurs"
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' identifiant unique de l'erreur. String composée automatiquement de la date 
    ''' au format long et du ownername
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property idError() As String
        Get
            Return Me._idError
        End Get
        Set(ByVal Value As String)
            Try
                Me._idError = Value
            Catch ex As Exception
                Throw New Exception("Error in the IdError property : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' type de l'erreur tel que renvoyé par l'exception levée
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorType() As String
        Get
            Return Me._errorType
        End Get
        Set(ByVal Value As String)
            Try
                Me._errorType = Value
            Catch ex As Exception
                Throw New Exception("Error in the error type propery : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' message de l'exception tel que renvoyé par l'exception levée
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorMessage() As String
        Get
            Return Me._errorMessage
        End Get
        Set(ByVal Value As String)
            Try
                Me._errorMessage = Value
            Catch ex As Exception
                Throw New Exception("Error in the error mesage property : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' erreurs empilées et renvoyées à l'exception levée
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorStackTrace() As String
        Get
            Return Me._errorStackTrace
        End Get
        Set(ByVal Value As String)
            Try
                Me._errorStackTrace = Value
            Catch ex As Exception
                Throw New Exception("Error in the error stacktrace property, object error : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' classe ou fonction ou sub dans laquelle s'est produite l'erreur
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorOrigin() As String
        Get
            Return Me._errorOrigin
        End Get
        Set(ByVal Value As String)
            Try
                Me._errorOrigin = Value
            Catch ex As Exception
                Throw New Exception(" Error in the Error object, errorOrigin property : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' nom de l'utilisateur pour lequel l'erreur s'est produite
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorOwner() As String
        Get
            Return Me._errorOwner
        End Get
        Set(ByVal Value As String)
            Try
                Me._errorOwner = Value
            Catch ex As Exception
                Throw New Exception("Error in the error object, errorOwner property : " & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' date à laquelle l'erreur s'est prouite
    ''' </summary>
    ''' <value></value>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Property errorDate() As Date
        Get
            Return Me._errorDate
        End Get
        Set(ByVal Value As Date)
            Try
                Me._errorDate = Value
            Catch ex As Exception
                Throw New Exception("error in the errorDate property of the error manager : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
            End Try
        End Set
    End Property
#End Region
#Region "COnstructeurs"
    Public Sub New()

    End Sub
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' constructeur qui permet de 
    ''' créer totalement une erreur, puis de la sauvergarder dans un fichier XML
    ''' </summary>
    ''' <param name="stType"></param>
    ''' <param name="stMessage"></param>
    ''' <param name="stStacktrace"></param>
    ''' <param name="stOrigin"></param>
    ''' <param name="stOwner"></param>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Public Sub New(ByVal exError As Exception, ByVal stOrigin As String, ByVal stOwner As String)
        Try
            Me.errorType = exError.GetType.ToString
            Me.errorOwner = stOwner
            Me.errorMessage = exError.Message
            Me.errorStackTrace = exError.StackTrace
            Me.errorOrigin = stOrigin
            Me.errorDate = Now.ToShortDateString
            Me.idError = Me.newId
            Me.UpdateXML()
        Catch ex As Exception
            Throw New Exception("error while creating the obect error manager : " & vbCrLf & ex.Message & vbCrLf & ex.GetType.ToString)
        End Try
    End Sub
#End Region
#Region "Methodes"
    ''' -----------------------------------------------------------------------------
    ''' <summary>
    ''' fonction qui crée automatiquement un nouvel identifiant en agrégeant 
    ''' la date au format long et le nom de l'utilisateur
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Private Function newId() As String
        Try
            Return Now.ToLongDateString & Me.errorOwner
        Catch ex As Exception
            Throw New Exception("error while creating the new Id of an error manager : " & vbCrLf & ex.GetType.ToString & vbCrLf & ex.Message)
        End Try
    End Function
    '''  -----------------------------------------------------------------------------
    ''' <summary>
    ''' fonction qui écrit l'erreur dans un fichier XML
    ''' </summary>
    ''' <remarks>
    ''' </remarks>
    ''' <history>
    ''' 	[Administrateur]	28/04/2006	Created
    ''' </history>
    ''' -----------------------------------------------------------------------------
    Private Sub UpdateXML()
        Try
            If File.Exists(Me.xmlPath) Then
                ds.ReadXml(xmlPath)
            Else
                Dim ds = New DataSet
            End If
            If ds.Tables.Count = 0 Then
                Dim dt As DataTable = New DataTable
                dt.Columns.Add("idError")
                dt.Columns.Add("errorType")
                dt.Columns.Add("errorMessage")
                dt.Columns.Add("errorStackTrace")
                dt.Columns.Add("errorOwner")
                dt.Columns.Add("errorOrigin")
                dt.Columns.Add("errorDate")
                dt.TableName = "ErrorManager"
                ds.Tables.Add(dt)
            End If
            Dim newrow As DataRow = ds.Tables(0).NewRow()
            newrow("idError") = Me.idError
            newrow("errorType") = Me.errorType
            newrow("errorMessage") = Me.errorMessage
            newrow("errorStackTrace") = Me.errorStackTrace
            newrow("errorOwner") = Me.errorOwner
            newrow("errorOrigin") = Me.errorOrigin
            newrow("errorDate") = Me.errorDate
            ds.Tables(0).Rows.Add(newrow)
            ds.WriteXml(xmlPath)
        Catch Ex As Exception
            Throw New Exception("error writing error manager to xml " & vbCrLf & Ex.GetType.ToString & vbCrLf & Ex.Message)
        End Try

    End Sub
#End Region
End Class

Conclusion :


A utiliser dans un bloc try catch
ex :
catch ex as exception
dim oErr as new ErrorManager(ex,"maFonction","monUtilisateur")

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.