在Winforms-MVP的半年中,我設計了以下異常處理策略。我有一個基本的抽象Presenter類,其中包含幾個Execute方法,將委託作爲輸入參數(簽名不同)。 View和Presenter之間的交互是通過IView中定義的事件(輸入)完成的,並通過設置公共屬性(輸出)或調用在IView中定義並由View實現的方法來完成。演示者中的每個事件處理程序調用Execute方法之一,爲其提供具體實現。向Winforms-MVP和WPF-MVVM中的異常通知最終用戶
在執行方法中,我有幾個catch塊可能會出現非常明確的異常(主要是因爲廣泛使用的外部組件中存在一些問題)。這些異常中的每一個都會停止當前操作的執行,並通過調用View的方法來記錄並向用戶顯示有意義的解釋。不久前(事實上很久以前)我開始學習WPF-MVVM,乍一看似乎與MVP有許多共同之處。我在尋找關於異常處理策略的一些方便的建議(主要是向用戶通知有關問題),但這個問題一般難以搜索 - 我的意思是,很多人說,但主要是原則上。我發現了20多個在app.xaml.cs中「處理」未處理的異常的例子,這一切都非常好,但真誠地告訴我 - 如果你知道確切的異常可能會導致你的應用程序崩潰,你會不會處理它們稍早(即使您將被迫關閉您的應用程序)?我不是追求所有可能的例外的粉絲。應該處理很多由網絡問題,臨時數據庫不可用等造成的異常,而不關閉應用程序,而沒有可怕的錯誤圖標讓普通用戶有機會重複他的請求。
因此,作爲一個實驗,我嘗試了幾乎與前面描述的相同的事情 - 我在ViewModel中創建了異常轉換和訂閱View的事件。但坦率地說,這種方式讓我毛骨悚然。
(這是一個很長的演講,我知道)問題:如何處理使用MVVM時通知用戶的異常?不,我現在對數據驗證不感興趣。任何關於MVP的批評和/或建議也是受歡迎的。
你關注哪一部分?提前趕,或遲到?如果你沒有趕上,你認爲這與WPF/MVVM有什麼關係? –