Próbka bestsellerów w MVVMCROSS obsługuje błędy przy użyciu dwóch podstawowych technik:
1. Klasy BaseViewModel do wspólnego obsługi błędów: Próbka bestsellerów wykorzystuje klasę „BaseViewModel` do zamknięcia kodu udostępnionego, w tym mechanizmów obsługi błędów. Takie podejście pozwala na scentralizowane zarządzanie powszechną logiką obsługi błędów w różnych modelach widoku. Na przykład metoda „generaliaSynCload” jest zdefiniowana w „baseViewModel” i jest używana przez różne modele widoku do ładowania danych asynchronicznych. Ta metoda może obejmować logikę obsługi błędów, która jest udostępniana w aplikacji.
2. Router błędu na poziomie aplikacji: Próbka wykorzystuje również „router błędu” na poziomie aplikacji, aby zarządzać tym, jak błędy są propagowane z modeli widoku do interfejsu użytkownika. Obejmuje to użycie obiektu wstrzykiwanego, zazwyczaj „ierrorreporter”, który jest inicjowany jako singleton podczas budowy aplikacji. Każdy projekt interfejsu użytkownika specyficzny dla platformy subskrybuje wydarzenia z tego singletonu przy użyciu interfejsu „ierrorsource”. Ta konfiguracja umożliwia specyficzne dla platformy mechanizmy wyświetlania błędów, takie jak UiaLertView na iOS lub Toasts na Androidzie, umożliwiając każdą platformę obsługi błędów w sposób pochodzący z jego środowiska.
W praktyce, gdy błąd występuje podczas asynchronicznej operacji, takich jak ładowanie danych z usługi internetowej, błąd jest złapany i zgłaszany przy użyciu „ierrorreporter”. Umożliwia to aplikacji wyświetlanie przyjaznych użytkownikom komunikatów o błędach lub podejmowanie alternatywnych działań, takich jak ponowne ponowne operowanie lub załadowanie danych offline.
Na przykład, jeśli `` CateoryListViewModel 'napotyka błąd podczas ładowania kategorii, może użyć metody „generaliAsynCload` z„ baseViewModel ”do obsługi błędu. Błąd jest następnie zgłaszany przez „Ierrorreporter”, który wyzwala odpowiednie powiadomienie interfejsu użytkownika na podstawie platformy.
Takie podejście zapewnia, że obsługa błędów jest zarówno scentralizowana, jak i elastyczna, umożliwiając łatwą adaptację do różnych platform i scenariuszy w ramach MVVMCROSS.
Cytaty:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error obsługa-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%3AP11_Question_id%3A1422998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-to-thandle-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-thandle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices obsługa-errors
[8] https://stackoverflow.com/questions/15697523/running-sample-projects-in-mvvmcross-v3-hot-tona
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx