我的視圖模型類有一個連接到服務的方法(不確定這是否是好的做法,或者視圖模型應該是嚴格的屬性和屬性更改機制)。當然,我想在連接或斷開連接時處理任何可能的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