2012-05-09 1 views
4

VB.Net에서 응용 프로그램을 만들었습니다. 그러나 일부 사용자는 시작시 충돌이 발생합니다. 즉, "프로그램을 닫습니다."라는 단 한 개의 버튼으로 "이 프로그램이 올바르게 작동하지 않는 문제"입니다. 앱이로드 될 때 많은 일이 일어나기 때문에 문제의 원인을 파악할 수 있습니까?응용 프로그램 충돌 이벤트 캐치

답변

5

프로젝트 속성에서 "응용 프로그램 프레임 워크"를 사용하는 경우 "응용 프로그램"프로젝트 속성 페이지에서 "응용 프로그램 이벤트보기"단추를 클릭하십시오. 그런 다음 이벤트 처리기 추가 : 응용 프로그램 프레임 워크를 사용하지 않는 경우

Partial Friend Class MyApplication 
    Private Sub MyApplication_UnhandledException(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
     ' ... 
    End Sub 
End Class 

을, 당신은 당신의 전체 Main 방법 주위의 try catch 블록을 넣어해야합니다. 그러나, 그것은 오직 주 스레드에서 발생하는 예외를 잡을 것입니다. 이 같은 다음

Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As UnhandledExceptionEventArgs) 
    ' ... 
End Sub 

그리고 현재 도메인의 UnhandledException 이벤트에 첨부 :

AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler 

응용 프로그램이 멀티 스레드 경우, 당신은이 같은 방법을 만들어 모든 스레드에서 예외를 처리 할 수 ​​있습니다 그런 다음 해당 이벤트 핸들러는 현재 스레드와 상관없이 도메인의 아무 곳에서나 처리되지 않은 모든 예외에 대해 호출됩니다.

+0

감사합니다. SteveDog. 어쨌든 오류를보기 위해 손쉽게 예외를 강제로 적용 할 수 있습니까? – theRonnie

+0

귀하의 질문이 무엇인지 잘 모르겠습니다. 예외가 Throw되어 미처리 된 경우 MyApplication_UnhandledException 핸들러가이를 수신해야합니다. 예외 처리기에서 처리되지 않는 다른 스레드 또는 무언가에 처리되지 않은 예외가있을 수 있지만 UI 스레드에서 throw 된 모든 내용은 해당 처리기에서 자동으로 catch해야합니다. –