在Winforms-MVP的半年时间里,我设计了以下异常处理策略。我有一个基础抽象Presenter类,其中包含几个以委托作为输入参数的Execute方法(签名不同)。视图和Presenter之间的交互是通过在IView中定义的事件(输入)和设置公共属性(输出)或调用IView中定义并由View实现的方法来完成的。Presenter中的每个事件处理程序都调用其中一个提供具体实现的Execute方法。
在执行方法中,我有几个catch块,用于可能发生的非常明确的异常(主要是由于广泛使用的外部组件存在一些问题)。每个这些异常都会停止当前操作的执行,并通过调用View的方法记录和向用户显示有意义的解释。
不久前(事实上非常不久之前),我开始学习WPF-MVVM,从第一眼看起来似乎与MVP有很多相似之处。我正在寻找关于异常处理策略的一些方便建议(主要是通知用户有关问题),但是这些问题通常很难搜索-我的意思是说,虽然有很多内容,但主要是原则性的。我已经找到了20多个关于在app.xaml.cs中“处理”未处理的异常的示例,这非常好,但是老实说-如果您知道可能崩溃应用程序的确切异常,您不会尽早处理它们吗(即使您将被迫关闭应用程序)?我绝不是抓取所有可能的异常的粉丝。由网络问题、暂时数据库不可用等引起的相当多的异常应该在不关闭应用程序并给普通用户重复请求的机会的情况下进行处理。
因此,作为一个实验,我尝试了几乎与我之前描述的相同的方法-我为ViewModel中的异常转换创建了事件,并订阅了View。但老实说,这种方式让我毛骨悚然。
(这是一个非常长的演讲,我知道)问题:在使用MVVM时如何处理异常以及通知用户?不,现在我对数据验证不感兴趣。任何关于MVP的批评和/或建议也受欢迎。
在执行方法中,我有几个catch块,用于可能发生的非常明确的异常(主要是由于广泛使用的外部组件存在一些问题)。每个这些异常都会停止当前操作的执行,并通过调用View的方法记录和向用户显示有意义的解释。
不久前(事实上非常不久之前),我开始学习WPF-MVVM,从第一眼看起来似乎与MVP有很多相似之处。我正在寻找关于异常处理策略的一些方便建议(主要是通知用户有关问题),但是这些问题通常很难搜索-我的意思是说,虽然有很多内容,但主要是原则性的。我已经找到了20多个关于在app.xaml.cs中“处理”未处理的异常的示例,这非常好,但是老实说-如果您知道可能崩溃应用程序的确切异常,您不会尽早处理它们吗(即使您将被迫关闭应用程序)?我绝不是抓取所有可能的异常的粉丝。由网络问题、暂时数据库不可用等引起的相当多的异常应该在不关闭应用程序并给普通用户重复请求的机会的情况下进行处理。
因此,作为一个实验,我尝试了几乎与我之前描述的相同的方法-我为ViewModel中的异常转换创建了事件,并订阅了View。但老实说,这种方式让我毛骨悚然。
(这是一个非常长的演讲,我知道)问题:在使用MVVM时如何处理异常以及通知用户?不,现在我对数据验证不感兴趣。任何关于MVP的批评和/或建议也受欢迎。