2010-03-18 12 views
0

Google 애플리케이션에서 처리되지 않은 예외가 발생했습니다. 나는이 특이한 예외가 던져지면 응용 프로그램이 바로 닫히기 때문에이 문제를 디버깅하기 위해 무엇을 찾아야할지 모릅니다 (심지어 VS에서 실행되는 경우조차도). 예외 처리는 설정입니다 방법 :AppDomain.CurrentDomain.UnhandledException이 항상 실행되지 않는 경우

[STAThread] 
[LoaderOptimizationAttribute(LoaderOptimization.MultiDomainHost)] 
static void Main() 
{ 
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 
Application.ApplicationExit += new EventHandler(ApplicationExitHandler); 
Application.ThreadException += new ThreadExceptionEventHandler(ThreadExceptionHandler); 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(UnhandledExceptionHandler); 
... 

throw되는 예외가 그런 식으로 시작되는 스레드 : 이제

Thread executerThread = new Thread(new ThreadStart(modele.Exporter)); 
executerThread.SetApartmentState(ApartmentState.STA); 
executerThread.Start(); 

를 해당 스레드 화재까지를 제외하고 우리 UnhandledExceptionHandler에서 던진 모든 처리되지 않은 예외 하나는 내가 문제가있다. 문제가되는 예외를 잡아서 다시 던지더라도 응용 프로그램이 자동으로 닫힙니다. 3 개의 핸들러 (ApplicationExit, ThreadException, UnhandledException) 중 아무 것도 실행되지 않습니다 (중단 점이 적중되지 않음).

그 예외적 인 예외는 없습니다 (자세한 내용은 여기를 참조하십시오 : http://pastebin.com/fCnDRRiJ).

답변

1

네이티브 코드를 호출하는 OleDb 공급자로 작업하고 있습니다. 특정 유형의 예외로 인해 원시 코드가 실패하면 CLR은 프로세스를 자동으로 닫을 수 있습니다. Sybase 용 OleDb 공급자와 공통점을 가지고 있었지만 특정 해결 방법이 아닌 몇 가지 해결 방법 만 있으면 도움이 될 수 있다고 생각합니다.

+0

거의 확실합니다. 내가 할 수있는 최선의 방법은 스레드에서 직접 예외를 처리하는 것입니다. 즉, 모든 것을 기록하려면 AppDomain.CurrentDomain.UnhandledException을 신뢰 할 수 없습니다. –

+0

나는 예외가 잡히면 응용 프로그램이 잘 작동한다는 것이 여전히 이상하다는 것을 알게되었습니다. "다음에 처리되지 않은 예외가 발생하면 바로 닫습니다."라는 어딘가에 플래그가 설정되어있는 것과 같습니다. 그것은별로 의미가 없습니다. –

관련 문제