MVVMCrossのベストセラーサンプルは、2つの主要な手法を使用してエラーを処理します。
1。共有エラー処理のためのBaseViewModelクラス:BestSellersサンプルは、「BaseViewModel」クラスを使用して、エラー処理メカニズムを含む共有コードをカプセル化します。このアプローチにより、異なるビューモデルにわたって一般的なエラー処理ロジックの集中管理が可能になります。たとえば、「generalAsyncload」メソッドは「baseviewmodel」で定義されており、さまざまなビューモデルでデータを非同期にロードするために使用されます。この方法には、アプリケーション全体で共有されるエラー処理ロジックを含めることができます。
2。アプリレベルのエラールーター:サンプルは、ビューモデルからユーザーインターフェイスへのエラーの伝播方法を管理するために、アプリレベルの「エラールーター」も採用しています。これには、注入されたオブジェクト、通常はアプリの構築中にシングルトンとして初期化される「ierrorreporter」を使用することが含まれます。各プラットフォーム固有のUIプロジェクトは、「IerrorSource」インターフェイスを使用して、このシングルトンのイベントを購読しています。このセットアップにより、iOS上のuialertViewsやAndroidのトーストなどのプラットフォーム固有のエラーディスプレイメカニズムが可能になり、各プラットフォームが環境に固有の方法でエラーを処理できます。
実際には、Webサービスからのデータのロードなど、非同期操作中にエラーが発生すると、「IerrorrePorter」を使用してエラーがキャッチおよび報告されます。これにより、アプリケーションはユーザーフレンドリーなエラーメッセージを表示したり、操作を再試行したり、オフラインデータのロードなどの代替アクションを実行したりできます。
たとえば、「カテゴリリストビューモデル」がカテゴリのロード中にエラーに遭遇した場合、「baseViewModel」の「generalAsyncload」メソッドを使用してエラーを処理できます。次に、エラーは「ierrorreporter」を介して報告され、プラットフォームに基づいて適切なUI通知をトリガーします。
このアプローチにより、エラー処理が集中化されており、柔軟性があることが保証され、MVVMCrossフレームワーク内のさまざまなプラットフォームやシナリオに簡単に適応できます。
引用:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error handling-in.html
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://asktom.oracle.com/ords/f?p=100%3A11%3A%3A%3A%3AP11_Question_ID%3A1422998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-siggested-way-to-exceptions-during-in-a-mvvmcross-application
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdelegate.cs
[6] https://discourse.getdbt.com/t/how-to handle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practicsハンドリングエラー
[8] https://stackoverflow.com/questions/15697523/running-sample-projects-in-mvvmcross-v3-hot-tuna
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx