【发布时间】:2011-05-12 19:47:51
【问题描述】:
我的视图模型类有一个连接到服务的方法(不确定这是否是好的做法,或者视图模型是否应该是严格的属性和属性更改机制)。当然,我想在连接或断开连接时处理任何可能的 WCF 异常。
考虑到这是一个我想引起用户注意的异常,让我们以未找到的端点为例。考虑粗略的代码示例:
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
}
直接在 catch 中调用 System.Windows.MessageBox.Show() 是否被认为是一种好习惯,或者我应该重新抛出异常以便我的 WPF 应用程序的另一层捕获它?如果是这样,捕获此类异常的理想位置在哪里?
【问题讨论】:
-
我以这种方式处理 WCF 错误:MSDN
-
您是否有任何其他可能适合 MVVM 模式或 WPF 的链接,因为我正在使用它们?我不确定 Silverlight(我从未编写过 silverlight 应用程序)是否适合我的场景。我更感兴趣的是在哪里捕获模式中的异常。
-
用户究竟打算如何处理这个异常?您应该告诉用户他需要什么才能正确“处理”这个异常。如果用户对此无能为力,则不要告诉用户任何异常,也许是“对不起,但出了点问题”。
-
@John,用户不需要拯救世界。我只需要向用户展示远端不可用。这就是我提到 MessageBox 的原因。这个问题不是关于我应该告诉用户什么,我想知道如何优雅地处理我正在使用的模式中的异常。
标签: wpf mvvm exception-handling