2012-02-09 5 views
2

Visual Basic .NET 2008에서 복잡한 응용 프로그램을 몇 개 만들었는데 테스트 단계에 있으므로 프로그램을 중단시킬 때마다 오류 또는 2 개를 자주 찾습니다. 문제는 현재 프로그램을 사용하고있는 사람을 기록하는 추적 부분이 있다는 것입니다. 사용자가 로그인하면 현재 로그인되어 있음을 로그에 기록하고 양식 닫기 이벤트가 발생하면 로그를 삭제하여 로그를 닫았 음을 나타냅니다.오류 이벤트 캡처

이제 내 문제는 양식이 오류로 인해 충돌 할 때마다 닫히는 이벤트를 트리거하지 않으므로 로그가 부정확해질 때마다 발생합니다. 양식의 이벤트 형태로 발생하는 오류를 캡처 할 수 있다면 내 질문은 무엇입니까?

답변

3

솔루션 탐색기에서 "내 프로젝트"를 두 번 클릭 해보십시오.

"응용 프로그램"탭에서 아래쪽으로 "응용 프로그램 이벤트보기"단추가 있습니다. 클릭하세요.

"ApplicationEvents"파일이 표시되어야합니다. UnhandledException 이벤트를 선택하십시오.

은 다음과 같아야합니다

Namespace My 

    ' The following events are available for MyApplication: 
    ' 
    ' Startup: Raised when the application starts, before the startup form is created. 
    ' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally. 
    ' UnhandledException: Raised if the application encounters an unhandled exception. 
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected. 
    Partial Friend Class MyApplication 

    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
     // log your exception here. 
    End Sub 
    End Class 

End Namespace 

참고 :이 이벤트는 while a debugger is attached을 발생하지 않습니다.

+0

훌륭한 응답과 예를 보내 주셔서 감사합니다. 이것은 내가 찾고 있었던 바로 그 것이다! –

0

Try...Catch 블록 주위에 코드를 래핑하여 예외를 잡을 수 있습니다.

예 :

Public Sub testProgram() 

     Try 

      'the code goes here 

     Catch ex As Exception 

      MessageBox.Show(ex.ToString) 

     End Try 

End Sub 

실제로 예외 처리는 개발 단계에서 수행해야합니다. 지금이 일은 지루한 작업이 될 것입니다.

+0

응용 프로그램의 릴리스 버전에서는 글로벌 try-catch가 작동하지 않습니다. ThreadException을 처리하고 싶을 것이다. http://www.codeproject.com/Articles/7482/User-Friendly-Exception-Handling –

+0

어쨌든 디버그 모드에서 전역 try-catch를 원하지 않는다면, 특정 라인에서 충돌이 발생하기를 원할 것입니다. 문제있는. 따라서 처리되지 않은 예외에 대한 예외 처리는 릴리스에서만 수행해야합니다. –