如何:在 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
    

请参阅