如何:在 Visual Basic 中记录异常

可以使用My.Application.LogMy.Log对象来记录有关应用程序中发生的异常的信息。 这些示例演示如何使用 My.Application.Log.WriteException 该方法记录显式捕获的异常和未经处理的异常。

若要记录跟踪信息,请使用 My.Application.Log.WriteEntry 方法。 有关详细信息,请参阅 WriteEntry

记录已处理的异常

  1. 创建将生成异常信息的方法。

    Public Sub ExceptionLogTest(ByVal fileName As String)
    End Sub
    
  2. 使用 Try...Catch 块捕获该异常。

    Try
    Catch ex As Exception
    End Try
    
  3. 将可能生成异常的代码放在块中 Try

    取消注释 DimMsgBox 行,导致 NullReferenceException 异常。

    ' Code that might generate an exception goes here.
    ' For example:
    '    Dim x As Object
    '    MsgBox(x.ToString)
    
  4. Catch 块中,使用 My.Application.Log.WriteException 方法写入异常信息。

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

    以下示例演示了用于记录已处理异常的完整代码。

    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
    

记录未经处理的异常

  1. 解决方案资源管理器中选择项目。 在 “项目” 菜单上,选择 “属性”。

  2. 单击 “应用程序 ”选项卡。

  3. 单击“ 查看应用程序事件 ”按钮打开代码编辑器。

    这会打开ApplicationEvents.vb文件。

  4. 在代码编辑器中打开ApplicationEvents.vb文件。 在 “常规 ”菜单上,选择 “MyApplication 事件”。

  5. “声明 ”菜单上,选择 “UnhandledException”。

    应用程序在主应用程序运行之前引发 UnhandledException 事件。

  6. My.Application.Log.WriteException 方法添加到 UnhandledException 事件处理程序。

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

    以下示例演示了用于记录未经处理的异常的完整代码。

    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
    

另请参阅