Winforms-MVPの半年の間、私は次の例外処理戦略を設計しました。私は、いくつかのExecuteメソッドが入力パラメータとしてデリゲートを取る基本的なPresenterクラスを持っています(シグネチャは異なります)。ビューとプレゼンタとの間のインタラクションは、IViewで定義されたイベント(入力)と、IViewで定義され、Viewで実装されたパブリックプロパティ(出力)または呼び出しメソッドを設定することによって行われます。プレゼンターの各イベントハンドラーは、具体的な実現を提供するExecuteメソッドの1つを呼び出します。Winforms-MVPとWPF-MVVMで例外のエンドユーザーに知らせる
実行メソッドでは、(主に広く使用されている外部コンポーネントのいくつかの問題のために)発生する可能性がある非常に明確な例外のためのいくつかのキャッチブロックがあります。これらの例外のそれぞれは、現在の操作の実行を停止し、ログに記録され、Viewのメソッドを呼び出すことによって意味のある説明がユーザーに表示されます。
私はWPF-MVVMを学び始めました。最初の一見からMVPとよく似ているようです。私はそこでの例外処理戦略(主にユーザーに問題点を知らせる)に関するいくつかの便利なアドバイスを探していましたが、この質問は一般的には検索するのが難しいです。私は、app.xaml.csで未処理の例外を "処理"する20以上の例を見つけました。これはすべてとても良いですが、心から教えてください。アプリをクラッシュさせる可能性のある厳密な例外を知っていれば、ちょっと早く(たとえあなたがアプリを閉じることを余儀なくされても)?私はすべての可能な例外をキャッチするファンではありません。ネットワークの問題、一時的なデータベースの利用不能などによって引き起こされる非常に多くの例外は、通常のユーザーに要求を繰り返す恐れのある恐ろしいエラーアイコンなしでアプリケーションを終了することなく処理する必要があります。
実験として、前に説明したのとほぼ同じことを試しました。私は、ViewModelでイベントを作成しました。しかし、率直に言って、この方法は私に忍び寄る。
(これは非常に長い話でした)質問: MVVMを使用しているときに通知することに関する例外をどのように処理しますか?いいえ、私は今のところデータ検証に興味がありません。 MVPに関する批判やアドバイスも歓迎します。
あなたはどちらの部分に関心がありますか?早い段階で捕まえたり、遅刻したりしますか?あなたが早期にキャッチしなかった場合、それはWPF/MVVMと関係があると思いますか? –