如何在.NET COmpact Framework 3.5中处理未处理的异常?

Gop*_*ath 0 .net compact-framework

在.NET CF中,是否有像Application.DispatcherUnhandledException这样的事件,它允许我们捕获所有未处理的日志异常以及保持应用程序打开而不会崩溃?

DispatcherUnhandledException事件处理程序的参数允许通过设置来停止应用程序崩溃

// Prevent default unhandled exception processing

e.Handled = true;
Run Code Online (Sandbox Code Playgroud)

事件AppDomain.CurrentDomain.UnhandledException允许捕获未处理的异常,但似乎没有办法阻止应用程序关闭.

我需要在.NET CF中由DispatcherUnhandledException提供的类似功能.请帮我.

Qui*_*ome 5

不.您有机会通过AppDomain.CurrentDomain.UnhandledException事件记录任何未处理的异常.但是,这不会捕获异常并允许您继续.

坦率地说,你"让应用程序保持开放而不崩溃"的愿望是一个可以理解而又天真的目标.我见过很多试图做到这一点的软件,其中大部分是彻头彻尾的废话.如果您的应用程序中的某些内容出错并且您没有明确的捕获,那么您不知道出了什么问题,并且持续存在是最危险的.

相反,您应该努力了解程序中可能发生异常的位置,并在以后为这些例程编写适当的处理程序.您可以记录已经注意到的异常,并从现场返回这些报告.然后,您可以编写适当的处理程序来处理这些错误.

在我的上一个项目中,我们确实实现了"全能"(对于UI线程),但这只会暂停应用程序,通知用户问题并关闭应用程序(然后另一个服务将重新启动它).这实际上非常简单,因为我们通过一个点重新路由所有按键和点击(以便轻松配置键和屏幕).如果您只是使用标准表单,那可能会更棘手.

还要确保您还在后台线程上编写高级捕获,因为后台线程上的未处理异常会立即终止您的应用程序.在这种情况下,我们通常将线程编组回UI"catch-all"处理程序(通过接口),该处理程序(再次)显示消息,记录异常并关闭应用程序.