Зразок бестселерів у MVVMcross обробляє помилки, використовуючи дві первинні методи:
1. Класи BaseViewModel для спільної обробки помилок: зразок бестселерів використовує клас BaseViewModel` для інкапсуляції спільного коду, включаючи механізми обробки помилок. Цей підхід дозволяє централізоване управління загальною логікою поводження з помилками в різних моделях перегляду. Наприклад, метод `generalasyncload` визначається в` baseViewModel` і використовується різними моделями перегляду для завантаження даних асинхронно. Цей метод може включати логіку обробки помилок, яка ділиться по всій програмі.
2. Маршрутизатор помилок на рівні APP: у зразку також використовується "маршрутизатор помилок" на рівні додатків, щоб керувати тим, як поширюються помилки від моделей перегляду до інтерфейсу користувача. Це передбачає використання введеного об'єкта, як правило, `ierrorreporter`, який ініціалізується як синглтон під час побудови додатків. Кожен проект інтерфейсу інтерфейсу користувача підписується на події з цього синглтону за допомогою інтерфейсу `ierrorsource`. Ця установка дозволяє специфічно для платформи механізми відображення помилок, такі як UialertView на iOS або тости на Android, що дозволяє кожній платформі впоратися з помилками таким чином, що є рідним для його середовища.
На практиці, коли помилка виникає під час асинхронної операції, наприклад, завантаження даних з веб -служби, помилка ловлять і повідомляється за допомогою `ierrorreporter`. Це дозволяє програмі відображати зручні повідомлення про помилки або вживати альтернативних дій, таких як повторне повторне роботи або завантаження даних в режимі офлайн.
Наприклад, якщо `CategoryListViewModel` стикається з помилкою під час завантаження категорій, він може використовувати метод` generalasyncload` з `baseViewModel` для обробки помилки. Потім про помилку повідомляється через `ierrorreporter`, який запускає відповідне сповіщення інтерфейсу на основі платформи.
Цей підхід гарантує, що поводження з помилками є як централізованою, так і гнучкою, що дозволяє легко адаптувати різні платформи та сценарії в рамках MVVMCross.
Цитати:[1] http://slode.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%3AP11_QUESTION_ID%3A142998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-to-handle-exceptions-during-in-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-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