MVVMCross의 베스트셀러 샘플은 두 가지 주요 기술을 사용하여 오류를 처리합니다.
1. 공유 오류 처리를위한 BaseViewModel 클래스 : 베스트셀러 샘플은`BaseViewModel` 클래스를 사용하여 오류 처리 메커니즘을 포함하여 공유 코드를 캡슐화합니다. 이 접근법을 사용하면 다른보기 모델에서 일반적인 오류 처리 로직을 중앙 집중화 할 수 있습니다. 예를 들어,`generalaSyncload '방법은`baseViewModel'에 정의되며 다양한 뷰 모델에서 데이터를 비동기로로드하는 데 사용됩니다. 이 방법에는 응용 프로그램에서 공유되는 오류 처리 로직이 포함될 수 있습니다.
2. 앱 레벨 오류 라우터 : 샘플은 또한 뷰 모델에서 사용자 인터페이스로 오류가 전파되는 방법을 관리하기 위해 앱 레벨 "오류 라우터"를 사용합니다. 여기에는 주입 된 객체, 일반적으로 'ierrorReporter'를 사용하는 것이 포함되며, 이는 앱 구성 중 싱글 톤으로 초기화됩니다. 각 플랫폼 별 UI 프로젝트는`ierrorsource` 인터페이스를 사용 하여이 싱글 톤의 이벤트를 가입합니다. 이 설정을 사용하면 IOS의 UialertViews 또는 Android의 토스트와 같은 플랫폼 별 오류 표시 메커니즘이 가능하므로 각 플랫폼이 환경에 유래 한 방식으로 오류를 처리 할 수 있습니다.
실제로, 웹 서비스에서 데이터로드와 같은 비동기 조작 중에 오류가 발생하면 'ierrorReporter'를 사용하여 오류가 잡히고보고됩니다. 이를 통해 응용 프로그램은 사용자 친화적 인 오류 메시지를 표시하거나 작업 재 시도 또는 오프라인 데이터로드와 같은 대체 작업을 수행 할 수 있습니다.
예를 들어,`categoryListViewModel '이 범주를로드하는 동안 오류가 발생하면'BaseViewModel '의'GeneralAsynCload '메소드를 사용하여 오류를 처리 할 수 있습니다. 그런 다음 오류는`ierrorReporter '를 통해보고되어 플랫폼을 기반으로 적절한 UI 알림을 트리거합니다.
이 접근법은 오류 처리가 중앙 집중식과 유연성을 보장하여 MVMCROSS 프레임 워크 내의 다양한 플랫폼 및 시나리오에 쉽게 적응할 수 있도록합니다.
인용 :[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%3A%3A%3AP11_Question_id%3A142998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-suggested-way-ton-exceptions-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-honle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices handling-errors
[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