Share via


Gewusst wie: Protokollieren von Ausnahmen in Visual Basic

Sie können das My.Application.Log-Objekt und das My.Log-Objekt verwenden, um Informationen über in der Anwendung auftretende Ausnahmen zu protokollieren. In diesen Beispielen wird gezeigt, wie mithilfe der My.Application.Log.WriteException-Methode sowohl explizit abgefangene als auch unbehandelte Ausnahmen protokolliert werden können.

Verwenden Sie für das Protokollieren von Ablaufverfolgungsdaten die My.Application.Log.WriteEntry-Methode. Weitere Informationen finden Sie unter WriteEntry

So protokollieren Sie eine behandelte Ausnahme

  1. Erstellen Sie die Methode, die die Ausnahmeinformationen generiert.

    Public Sub ExceptionLogTest(ByVal fileName As String)
    End Sub
    
  2. Verwenden Sie einen Try...Catch-Block, um die Ausnahme abzufangen.

    Try
    Catch ex As Exception
    End Try
    
  3. Setzen Sie den Code, der eine Ausnahme generieren könnte, in den Try-Block.

    Heben Sie die Auskommentierung der Codezeilen Dim und MsgBox auf, um eine NullReferenceException-Ausnahme zu verursachen.

    ' Code that might generate an exception goes here.
    ' For example:
    '    Dim x As Object
    '    MsgBox(x.ToString)
    
  4. Verwenden Sie im Catch-Block die My.Application.Log.WriteException-Methode, um die Ausnahmeinformationen zu schreiben.

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

So protokollieren Sie eine nicht behandelte Ausnahme

  1. Wählen Sie im Projektmappen-Explorer ein Projekt aus. Klicken Sie im Menü Projekt auf Eigenschaften.

  2. Klicken Sie auf die Registerkarte Anwendung.

  3. Klicken Sie auf die Schaltfläche Anwendungsereignisse anzeigen, um den Code-Editor zu öffnen.

    Daraufhin wird die Datei ApplicationEvents.vb geöffnet.

  4. Öffnen Sie die Datei ApplicationEvents.vb im Code-Editor. Klicken Sie im Menü Allgemein auf MyApplication-Ereignisse.

  5. Klicken Sie im Menü Deklarationen auf UnhandledException.

    Die Anwendung löst vor dem Ausführen der Hauptanwendung das UnhandledException-Ereignis aus.

  6. Fügen Sie im UnhandledException-Ereignishandler die My.Application.Log.WriteException-Methode hinzu.

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

Beispiel

In diesem Beispiel wird der vollständige Code für die Protokollierung einer behandelten Ausnahme gezeigt.

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

Im folgenden Beispiel wird der vollständige Code für die Protokollierung einer nicht behandelten Ausnahme gezeigt. Sie können mit dem Projekt-Designer auf die Anwendungsereignisse im Code-Editor zuzugreifen. Weitere Informationen finden Sie unter Gewusst wie: Behandeln von Anwendungsereignissen (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

Siehe auch

Aufgaben

Gewusst wie: Schreiben von Protokollmeldungen (Visual Basic)

Exemplarische Vorgehensweise: Bestimmen, wohin "My.Application.Log" Informationen schreibt (Visual Basic)

Exemplarische Vorgehensweise: Ändern des Orts, in den "My.Application.Log" Informationen schreibt (Visual Basic)

Referenz

Microsoft.VisualBasic.Logging.Log

WriteEntry

WriteException

Konzepte

Arbeiten mit Anwendungsprotokollen in Visual Basic