2

通过挂钩 UnhandledExceptionHandler 事件,我在 C# 应用程序中添加了 AppDomain 级别的全局错误处理程序。

我的问题是,即使我正在处理这个异常,我仍然会弹出“应用程序已停止工作”。

这是正常行为吗?可以关闭吗?或者实际上显示此消息可能是一种好习惯?

4

2 回答 2

3

这是正常行为吗?

是的。想一想,你的代码应该在哪里恢复?在什么状态?

可以关闭吗?

只有在程序中的适当位置(即顶层代码)中处理异常。UnhandledExceptionHandler 不是替代品,而是用于不完整处理的诊断工具。

或者实际上显示此消息可能是一种好习惯?

是的。您应该记录到达那里但您已经失去控制的异常。

于 2011-06-05T08:00:00.140 回答
2

我认为当你到达那个时候是不可能恢复应用程序的现有实例的。MSDN 没有关于它的信息,建议“如果有关应用程序状态的足够信息可用,则可以采取其他措施——例如保存程序数据以供以后恢复。” (链接

无法恢复是有道理的。如果您在Unhandled ExceptionHandler 中捕获了异常,则意味着您的应用程序无法处理它,因此您最后一次机会记录所发生的事情(用于以后的调查)或保存用户的数据。如果“未处理”异常处理程序必须“处理”异常并恢复应用程序,这听起来像是架构问题。

为什么不通过创建应用程序的新实例来恢复?(或通过使用重启和恢复功能)

于 2011-06-05T08:01:09.433 回答