„MVVMCross“ bestselerių pavyzdys tvarko klaidas, naudodamas dvi pagrindines metodus:
1. „BaseViewModel“ klasės, skirtos bendroms klaidų tvarkymui: bestselerių pavyzdyje naudojama „baseViewModel“ klasė, kad būtų galima įtraukti bendrąjį kodą, įskaitant klaidų tvarkymo mechanizmus. Šis metodas leidžia centralizuoti bendrą klaidų tvarkymo logiką skirtinguose rodinių modeliuose. Pavyzdžiui, „generalaSyncload“ metodas yra apibrėžtas „baseViewModel“ ir yra naudojamas įvairiuose vaizdų modeliuose, kad būtų galima įkelti duomenis asinchroniškai. Šis metodas gali apimti klaidų tvarkymo logiką, kuri yra dalijama visoje programoje.
2. APPLE lygio klaidų maršrutizatorius: Imtyje taip pat naudojamas programos lygio „klaidų maršrutizatorius“, kad būtų galima valdyti, kaip klaidos skleidžiamos nuo vaizdo modelių iki vartotojo sąsajos. Tai apima injekuoto objekto, paprastai „ierrorreporter“, naudojimą, kuris yra inicijuotas kaip singletonas programos konstrukcijos metu. Kiekvienas konkrečiam platformai skirtas UI projektas pasirašo įvykius iš šio „Singleton“, naudodamas „iErrorSource“ sąsają. Ši sąranka įgalina konkrečiai platformai būdingus klaidų rodymo mechanizmus, tokius kaip „UIALERTViews“ „iOS“ arba „Toasts“ „Android“, leidžiant kiekvienai platformai valdyti klaidas tokiu būdu, kuris yra jo aplinka.
Praktiškai, kai asinchroninės operacijos metu įvyksta klaida, pavyzdžiui, įkeliant duomenis iš žiniatinklio paslaugos, klaida sugaunama ir pranešama naudojant „iErrorreporter“. Tai leidžia programai rodyti patogius vartotojams klaidų pranešimus arba atlikti alternatyvius veiksmus, pavyzdžiui, bandyti operaciją ar įkelti neprisijungus prie neprisijungus.
Pvz., Jei „CategoryListViewModel“ kyla klaida įkeliant kategorijas, ji gali naudoti „generolasyncload“ metodą iš „baseViewmodel“, kad būtų galima tvarkyti klaidą. Tada klaida pranešama per „iErrorreporter“, kuris suaktyvina tinkamą UI pranešimą, pagrįstą platforma.
Šis požiūris užtikrina, kad klaidų tvarkymas yra tiek centralizuotas, tiek lankstus, todėl MVVMCROSS sistemoje lengvai pritaikoma įvairioms platformoms ir scenarijams.
Citatos:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error tvarkymas-in.html
[2] https://leaware.com/creating-cross-platform-xamarin-application-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-ode-handle-exception-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/hhow-oternle-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