2014-01-15 2 views
-1

Я написал себе оболочку OpenGL F # с OpenTK, и я увидел, что когда я запустил мое приложение примерно на 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 

Но это не исключение.

Так что я посмотрел на код ошибки

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

, который я нашел, чтобы быть

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

Это не может быть правильным кодом ошибки. Ошибка DNS?

Любые идеи, что я мог попробовать?

+0

Как он себя ведет, если вы остановите отладчик, когда будут сброшены все исключения? –

+0

@RowlandShaw Да, я тоже это пробовал, но он все равно прерывает и выходит из отладчика. –

+0

Попробуйте подписаться на событие 'AppDomain.CurrentDomain.UnhandledException'. –

ответ

1

Добавить (Console.ReadKey true) |> ignore в конец вашей функции. Это приведет к остановке окна консоли и дождитесь нажатия клавиши (любого нажатия) перед выходом (см. MSDN).

Кроме того, используйте e.ToString(), а не только e.Message. Exception.ToString() предоставит вам полную трассу и другую связанную с ней информацию, которая обычно много более полезно, чем просто сообщение об исключении.

Коды выхода уникальны для каждого приложения. При поиске кодов ошибок вы должны убедиться, что словарь, который вы ищете, соответствует номеру приложения и версии.

Смежные вопросы