使用C#捕获未知异常

时间:2014-04-07 23:38:09

标签: c# debugging

我有一个应用程序(用C#/ ClickOnce编写),它在大多数情况下工作正常;它没有内存泄漏并可靠运行,并且一次可以稳定运行。

但是,它也使用MEF(因此可以将插件/扩展动态添加到核心组件中)。再次,这个'工作'目前,但如果在外部链接的程序集/插件中发生异常/致命错误,则会使整个应用程序崩溃。

经过最近一次测试后,我发现该应用程序在[成功]运行约14小时后崩溃了。

考虑到这一点,我的问题实际上是双重的:

a)是否可以捕获插件(或主应用程序)可能抛出的任何无法处理的异常,因此它至少可以输出调试帮助信息?

b)我无法确定是插件还是主要应用程序失败了。因此,我无法想到从哪里开始调试/跟踪问题。如何找到只在这么长时间后发生的错误?

感谢您的任何意见。

1 个答案:

答案 0 :(得分:1)

正如评论中所述(我想我应该在开始输入答案之前阅读这些内容......)

当一个应用程序抛出一个未处理的异常时,它会在死亡之前触发UnhandledException事件,你可以订阅它以记录任何可以帮助你弄清楚发生了什么的细节。

有关如何使用它的示例,请参阅this SO帖子(包括ThreadException)。