2013-08-15 2 views
0

WPF 프로젝트에서 몇 가지 사용자 지정 예외를 만들었으므로 예외가 발생했을 때 잡기가 어렵지만 응용 프로그램이 충돌하지는 않습니다. 예외는 출력 창에 기록됩니다.처리되지 않은 예외에서 충돌하는 방법

내 사용자 지정 예외는 System.Exception에서 파생되며 내 사용자 지정 예외 또는 System.Exception을 발견하면 모든 내 try{}catch{} 문을 검사했습니다. 그들 중 누구도 그렇게하지 않습니다. Visual Studio 2010을 사용하고 있고 32 비트 시스템에서 실행 중이므로 this은 다른 문제인 것으로 보입니다.

+3

그들이 잡히지 않는 것을 어떻게 알 수 있습니까? [throw on break] (http://msdn.microsoft.com/en-us/library/vstudio/d14azbfh.aspx) 예외를 체크해 보았습니까? 예외가 try/catch 블록에있는 경우에도 코드가 손상됩니다. 또한 다른 스레드 (예 : 작업 또는 백그라운드 작업자)에서 실행되는 예외를 유발하는 코드는 예외를 검사하는 특별한 방법이 있습니다. –

+1

당신은 배경 스레드에 그들을 던지고 있습니까? –

+0

백그라운드 스레드가 처리되지 않은 예외를 발생시키는 경우 자동으로 실패 할 수 있습니다. 일부 응용 프로그램 처리되지 않은 예외 처리기 (http://stackoverflow.com/questions/1472498/wpf-global-exception-handler)에 연결하십시오. 또한 출력 창에 "first chance exception"과 같은 내용이보고되면 디버거에서 알려주지 만 이러한 예외는 catch되고 처리됩니다 (예외를 흐름 제어로 사용하는 경우가 있음). (http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx) –

답변

0

당신은 AppDomain.UnhandledException 이벤트에 대한 처리기를 추가 할 수 있습니다

AppDomain.CurrentDomain.UnhandledException += App_UnhandledException; 

public void App_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
{ 
    Exception exception = (Exception)e.ExceptionObject; 
    Error error = new Error(exception, mainViewModel.StateManager.CurrentUser);   
    mainViewModel.AddError(error); 
} 

Error 내가 가진 데이터베이스에 오류를 기록하는 데 사용하는 사용자 정의 클래스입니다. 이 메서드에 중단 점을 넣으면 catch되지 않은 Exception 개체가있을 때마다 실행이 여기로 이동합니다.

관련 문제