다음을 통해 공유


방법: Visual Basic에서 예외 기록

My.Application.LogMy.Log 개체를 사용하여 애플리케이션에서 발생하는 예외에 대한 정보를 기록할 수 있습니다. 이 예제에서는 My.Application.Log.WriteException 메서드를 사용하여 명시적으로 catch하는 예외 및 처리되지 않은 예외를 기록하는 방법을 보여 줍니다.

추적 정보를 기록하려면 My.Application.Log.WriteEntry 메서드를 사용합니다. 자세한 내용은 WriteEntry를 참조하세요.

처리된 예외를 기록하려면

  1. 예외 정보를 생성하는 메서드를 만듭니다.

    Public Sub ExceptionLogTest(ByVal fileName As String)
    End Sub
    
  2. Try...Catch 블록을 사용하여 예외를 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
    

참고 항목