2014-01-15 5 views
-1

OpenTK를 사용하여 F # OpenGL 래퍼를 작성했는데 응용 프로그램을 약 5 분간 실행하면 중단되고 예외가 발생하여 콘솔에 인쇄됩니다.알 수없는 예외를 잡을 수 없습니다.

문제는 Visual Studio의 콘솔이 즉시 닫히고 메시지 출력을 볼 수 없다는 것입니다.

그래서 나는 이것을 잡아서이 같은 중단 점을 추가하려고 할 수 있다고 생각했습니다.

let game = new HelloCube.Game() 

try 
    game.Run(60.,60.) 
with 
    | :? System.Exception as e -> 
     printfn "%s" e.Message 
     printfn "end" //breakpoint 

그러나 예외를 포착하지 않습니다.

그래서 나는

DNS RR set that ought to exist, does not exist. 

이 올바른 오류 코드가 될 수없는 것으로 확인 오류 코드

The program '[4236] HelloCube.exe: Managed (v4.0.30319)' has exited with code 9008 (0x2330). 

바라 보았다. DNS 오류입니까?

내가 시도 할 수있는 아이디어가 있습니까?

+0

모든 예외가 발생했을 때 디버거를 중지하도록 설정하면 어떻게 동작합니까? –

+0

@RowlandShaw 예 시도해 보았지만 여전히 디버거를 중단하고 종료합니다. –

+0

'AppDomain.CurrentDomain.UnhandledException' 이벤트를 구독하십시오. –

답변

1

기능 끝에 (Console.ReadKey true) |> ignore을 추가하십시오. 그러면 콘솔 창이 일시 중지되고 종료하기 전에 키 누르기 (any keypress)를 기다립니다 (MSDN 참조).

또한 e.Message이 아닌 e.ToString()을 사용하십시오. Exception.ToString() 당신에게 전체 strack 추적 및 기타 관련 정보를 일반적으로 더 많은 다음 그냥 예외 메시지가 도움이 될 줄 것입니다.

종료 코드는 모든 응용 프로그램마다 고유합니다. 오류 코드를 찾을 때, 찾고있는 사전이 응용 프로그램 및 버전 번호와 일치하는지 확인해야합니다.