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")
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.