0

我有一个我构建的 dll 库,以帮助减少从项目复制到项目的样板代码量。dll 中运行了一个计时器,以通过 RPC 保持与我们机器的连接。当我调试我的项目并中断 RPC 连接时,我的代码优雅地从 dll 库中抛出一个断开事件,我的主窗体捕获该事件并适当地处理它。

现在,为发布而构建。当我断开 RPC 连接时,会从库中抛出一个未处理的异常,该异常显然没有在其他地方捕获。

奇怪的是,引发异常的代码在计时器中,并且调用都包装在 try/catch 块中,而 catch 块吞下异常并执行其他清理工作。

我不明白在调试模式下一切都很好,但在发布时却不是。那部分对我来说没有意义。我尝试查看异常对象并在其上设置一个已处理的属性,但它不可用。这是我所看到的正常行为吗?

我最近才开始在我的项目中使用大量库,以使我的解决方案更加精简和易于遵循。希望这不是我没有考虑过的库的问题。

4

1 回答 1

2

有些类型的异常在 Release 模式下的 Try-Catch 中没有被捕获,例如发生在不同线程中的异常。尝试在主窗体中处理Application.ThreadException事件。

您还可以处理Application.CurrentDomain.UnhandledException以确保捕获所有未处理的异常。

于 2012-04-11T15:16:13.040 回答