Comment : enregistrer des exceptions dans Visual Basic

Mise à jour : novembre 2007

Vous pouvez utiliser les objets My.Application.Log et My.Log pour enregistrer des informations sur les exceptions qui se produisent dans votre application. Ces exemples indiquent comment utiliser la méthode My.Application.Log.WriteException pour enregistrer des exceptions que vous interceptez explicitement et des exceptions qui ne sont pas gérées.

Pour enregistrer des informations de traçage, utilisez la méthode My.Application.Log.WriteEntry. Pour plus d'informations, consultez WriteEntry, méthode (My.Application.Log et My.Log).

Pour enregistrer une exception gérée

  1. Créez la méthode qui générera les informations sur les exceptions.

    Public Sub ExceptionLogTest(ByVal fileName As String)
    End Sub
    
  2. Utilisez un bloc Try...Catch pour intercepter l'exception.

    Try
    Catch ex As Exception
    End Try
    
  3. Placez le code susceptible de générer une exception dans le bloc Try.

    Supprimez les marques de commentaire des lignes Dim et MsgBox pour provoquer une exception NullReferenceException.

    ' Code that might generate an exception goes here.
    ' For example:
    '    Dim x As Object
    '    MsgBox(x.ToString)
    
  4. Dans le bloc Catch, utilisez la méthode My.Application.Log.WriteException pour écrire les informations sur les exceptions.

    My.Application.Log.WriteException(ex, _
        TraceEventType.Error, _
        "Exception in ExceptionLogTest " & _
        "with argument " & fileName & ".")
    

Pour enregistrer une exception non gérée

  1. Sélectionnez un projet dans l'Explorateur de solutions. Dans le menu Projet, choisissez Propriétés.

  2. Cliquez sur l'onglet Application.

  3. Cliquez sur le bouton Afficher les événements de l'application pour ouvrir l'éditeur de code.

    Le fichier ApplicationEvents.vb s'ouvre.

  4. Ouvrez le fichier ApplicationEvents.vb dans l'éditeur de code. Dans le menu Général, choisissez Événements MyApplication.

  5. Dans le menu Déclarations, choisissez UnhandledException.

    L'application déclenche l'événement UnhandledException avant l'exécution de l'application principale.

  6. Ajoutez la méthode My.Application.Log.WriteException au gestionnaire d'événements UnhandledException.

    My.Application.Log.WriteException(e.Exception, _
        TraceEventType.Critical, _
        "Application shut down at " & _
        My.Computer.Clock.GmtTime.ToString)
    

Exemple

Cet exemple affiche le code complet pour enregistrer une exception gérée.

Public Sub ExceptionLogTest(ByVal fileName As String)
    Try
        ' Code that might generate an exception goes here.
        ' For example:
        '    Dim x As Object
        '    MsgBox(x.ToString)
    Catch ex As Exception
        My.Application.Log.WriteException(ex, _
            TraceEventType.Error, _
            "Exception in ExceptionLogTest " & _
            "with argument " & fileName & ".")
    End Try
End Sub

L'exemple suivant affiche le code complet pour enregistrer une exception non gérée. Vous pouvez utiliser le Concepteur de projets pour accéder aux événements de l'application dans l'éditeur de code. Pour plus d'informations, consultez Comment : gérer les événements d'application (Visual Basic).

Private Sub MyApplication_UnhandledException( _
    ByVal sender As Object, _
    ByVal e As ApplicationServices.UnhandledExceptionEventArgs _
) Handles Me.UnhandledException
    My.Application.Log.WriteException(e.Exception, _
        TraceEventType.Critical, _
        "Application shut down at " & _
        My.Computer.Clock.GmtTime.ToString)
End Sub

Voir aussi

Tâches

Comment : écrire des messages de journal

Procédure pas à pas : détermination de l'emplacement des informations My.Application.Log

Procédure pas à pas : modification de l'emplacement des informations My.Application.Log

Concepts

Utilisation des journaux d'applications dans Visual Basic

Référence

My.Application.Log, objet

My.Log, objet

WriteEntry, méthode (My.Application.Log et My.Log)

WriteException, méthode (My.Application.Log et My.Log)