【问题标题】:Unable to catch an unknown exception无法捕获未知异常
【发布时间】:2014-02-04 06:33:05
【问题描述】:

我用 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

但它没有捕获异常。

于是我查看了错误代码

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 错误?

有什么我可以尝试的想法吗?

【问题讨论】:

  • 如果将调试器设置为在抛出所有异常时停止,它的行为如何?
  • @RowlandShaw 是的,我也试过了,但它仍然中止并退出调试器。
  • 尝试订阅AppDomain.CurrentDomain.UnhandledException事件。
  • 感谢您的接受,但我很难相信我确实回答了您的问题。 :)

标签: .net opengl visual-studio-2012 f# error-code


【解决方案1】:

( Console.ReadKey true ) |> ignore 添加到函数的末尾。这将导致控制台窗口暂停并等待按键(任何按键),然后退出(请参阅MSDN)。

另外,使用e.ToString() 而不仅仅是e.MessageException.ToString() 将为您提供完整的轨迹跟踪和其他相关信息,这些信息通常非常比异常消息更有帮助。

退出代码对于每个应用程序都是唯一的。在查找错误代码时,您必须确保您正在查看的字典与应用程序和版本号匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2021-10-09
    • 2022-01-03
    • 2021-12-03
    • 2021-09-17
    相关资源
    最近更新 更多