我的视图模型类有一个连接到服务的方法(不确定这是否是好的做法,或者视图模型应该是严格的属性和属性更改机制)。当然,我想在连接或断开连接时处理任何可能的WCF异常。我在哪里可以捕获MVVM中的异常?
考虑到这是我想引起用户注意的一个例外,我们使用未找到的端点作为示例。考虑粗糙的代码示例:
public void Connect()
{
ServiceClient proxy = null;
try
{
proxy = new ServiceClient();
proxy.Subscribe();
// ...
}
catch(EndpointNotFoundException)
{
// should I do something here?
}
// .. other WCF related exception catches and a finally
}
是它认为好的做法渔获内可能调用System.Windows.MessageBox.Show()直接或者我应该可能重新抛出异常,所以我的WPF应用程序的另一层抓住它?如果是这样,哪里才是理想的地方来捕捉这样的例外?
用户对此异常的意图究竟是什么?你应该告诉用户他需要什么才能正确“处理”这个异常。如果用户没有办法做到这一点,那么不要告诉用户任何异常情况,可能是“对不起,但有些事情是错误的”。 – 2010-11-19 19:49:50
@约翰,用户不需要拯救世界。我只需要向用户展示远端不可用。这就是为什么我提到一个MessageBox。这个问题不是关于我应该告诉用户的,我想知道如何在我使用的模式中优雅地处理异常。 – jlafay 2010-11-19 19:59:21
我以这种方式处理WCF错误:[MSDN](http://msdn.microsoft.com/en-us/library/dd470096%28VS.96%29.aspx) – Gabe 2010-11-19 19:13:09