您的应用程序已停止工作,即使挂钩到UnhandledExceptionHandler也是如此

时间:2011-06-05 07:46:32

标签: c# unhandled-exception

我已经通过挂钩到UnhandledExceptionHandler事件,在AppDomain级别向我的C#应用​​程序添加了一个全局错误处理程序。

我的问题是,即使我正在处理此异常,我仍然会收到弹出窗口“App已停止工作”。

这是正常行为吗?可以关掉吗?或者,实际显示此消息是不错的做法?

2 个答案:

答案 0 :(得分:3)

  

这是正常行为吗?

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

  

可以关闭吗?

仅通过处理异常来处理程序中的适当点,即在顶层代码中。 UnhandledExceptionHandler不是替代品,而是用于不完整处理的诊断工具。

  

或者实际上显示此消息是不错的做法?

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

答案 1 :(得分:2)

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

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

为什么不通过创建应用的新实例来恢复? (或使用Restart and Recovery功能)