如何解决WPF应用程序的异常处理
| 我有一个实质性的WPF应用程序,设置如下: 具有SQL Compact DB的视图,ViewModels,业务对象和Dal。 通过Linq2Sql进行数据库调用。 应用程序是单用户。 (每个用户一个数据库)。 假定在CRUD操作期间Dal内发生异常,或者用户删除了数据库,那么应该在哪里进行异常处理。 另外,如果由于某种原因在View / ViewModel中引发了异常,我也不希望系统崩溃。我应该如何处理。我是否应该仅通知用户发生错误并重新创建View / ViewModel,以便用户可以继续。 ViewModel仅通过Messenging与其他ViewModel通信(例如,需要刷新某些内容)。解决方法
最简单的答案是,它实际上取决于应用程序的确切要求。
详细信息:首先,在有可能发生特殊情况的地方,应进行特殊处理。在执行CRUD操作时,在视图模型中执行某些操作,甚至创建视图时。用户肯定不希望该应用程序崩溃。因此,最好的办法是处理异常,自定义错误消息,以便它对用户有意义并向用户显示,以便他/她知道已发生错误。还询问用户现在要做什么(这实际上又取决于应用程序的要求),但是例如是否删除了数据库文件,询问用户是否要创建一个新文件或类似的东西
, 在WPF应用程序的OnStartup()方法中,您可以订阅Application.Current.DispatcherUnhandledException异常事件,该事件使您可以记录异常,将异常通知用户并在可能的情况下建议任何补救措施,并取消终止应用程序通过设置e.Handled = true。
仅在可以纠正导致异常的原因时,才应取消应用程序的终止,否则可能会使应用程序处于未定义状态。
, 数据库问题应在您的dal中处理,dal应该通知某人有关消息传递/事件的问题。
除非您拥有诸如caliburn之类的mvvm框架,它们可以独立地捆绑这些东西,否则视图/视图模型中的异常应捕获在此类内。
捕获异常后,应将一条消息发送到外壳/视图管理器,以处理问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。