我有一个dll库,我帮助减少从项目到项目复制的样板代码量。在dll中运行一个计时器,通过RPC保持与我们机器的连接。当我调试我的项目并中断RPC连接时,我的代码优雅地从dll库中抛出一个disconnect事件,我的主窗体捕获事件并适当地处理它。
现在,构建发布。当我中断RPC连接时,从库中抛出未处理的异常,显然未在其他地方捕获。
奇怪的是抛出异常的代码在计时器中,并且调用都包含在try / catch块中,catch块吞下异常并进行其他清理工作。
我没有得到如何在调试模式下一切都很好,但在发布它不是。那部分对我来说没有意义。我尝试查看异常对象并在其上设置处理属性,但它不可用。这是我看到的正常行为吗?
我最近刚开始在我的项目中使用大量库来保持我的解决方案更加简洁和易于理解。希望这不是我未考虑的库的问题。
答案 0 :(得分:2)
在发布模式下的Try-Catch中没有捕获某些类型的异常,例如在不同的线程中发生的异常。尝试处理主表单中的Application.ThreadException事件。
您还可以处理Application.CurrentDomain.UnhandledException以确保捕获所有未处理的异常。