次の方法で共有


方法: Visual Basic で例外をログに記録する

My.Application.LogオブジェクトとMy.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 ブロックに配置します。

    NullReferenceException例外が発生するように、Dim行とMsgBox行のコメントを解除します。

    ' 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
    

こちらも参照ください