2011-04-24 4 views
1

나는 최근에 내 처리되지 않은 예외가 이런 식으로 처리로 전환했습니다winforms 처리되지 않은 예외 상자가 때때로 계속되는 이유는 무엇입니까?

Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

이것은 로깅을위한 좋은 무엇을하지 않습니다,하지만 나는 '계속'로 이전되지 않은 예외 상자의 능력을 잃었다 . 현재 처리기가 다시 시작하라는 메시지 만 표시합니다. 많은 경우, 처리되지 않은 예외 상자에서 계속 클릭하면 실제로 프로그램이 올바르게 실행됩니다. 이게 어떻게 작동합니까? 지금 처리되지 않은 예외를 잡는 방식으로 '계속'허용 할 수있는 방법이 있습니까? 예외가 특정 유형이라면 처리되지 않은 예외 상자처럼 '계속'할 수 있습니까? 아니면 불가능한가요?

아무도 거기에 예외 세계의 너트와 볼트를 이해합니까? 당신의 생각을 듣고 싶습니다.

+0

이 질문을 삭제하십시오. 나는이 예외를 잡았을 때 처리되지 않은 상자에서 계속하는 것처럼 보입니다. –

답변

2

CLR의 기본 동작이므로 응용 프로그램이 종료되었습니다. 처리되지 않은 예외가있는 경우 이는 프로그램에 치명적인 결함이 있음을 의미하며 이러한 상황에 대한 최상의 처리는 전체 응용 프로그램을 닫는 것입니다.

그러나 이러한 처리되지 않은 예외를 계속 수행하려는 경우 기술을 사용할 수 있습니다. 애플리케이션에 두 번째 도메인을 생성하고 거기에 라이브러리를로드 할 수 있습니다. 다른 앱 도메인 내의 예외는 독립적입니다. 내 blog entry 체크 아웃, 일부 샘플 코드를 사용할 수 있습니다.

관련 문제