Bestselleru paraugs MVVMCROSS apstrādā kļūdas, izmantojot divus galvenos paņēmienus:
1. BaseViewModel klases koplietotās kļūdu apstrādes apstrādei: Bestselleru paraugs izmanto “BaseViewModel” klasi, lai iekapsulētu koplietoto kodu, ieskaitot kļūdu apstrādes mehānismus. Šī pieeja ļauj centralizēti pārvaldīt parasto kļūdu apstrādes loģiku dažādos skatu modeļos. Piemēram, “GeneralAsynCload” metode ir definēta `baseViewModel`, un dažādi skatu modeļi to izmanto, lai slodze datus tiktu asinhroni. Šī metode var ietvert kļūdu apstrādes loģiku, kas tiek koplietota visā lietojumprogrammā.
2. Lietotnes līmeņa kļūdu maršrutētājs: paraugā tiek izmantots arī lietotnes līmeņa "kļūdu maršrutētājs", lai pārvaldītu, kā kļūdas tiek izplatītas no skata modeļiem uz lietotāja interfeisu. Tas nozīmē injicēta objekta izmantošanu, parasti “ierrorreporter”, kas lietotņu būvniecības laikā tiek inicializēts kā singletons. Katrs platformas specifiskais UI projekts abonē notikumus no šī singletona, izmantojot “ierrorsource” interfeisu. Šī iestatīšana nodrošina platformai specifiskus kļūdu displeja mehānismus, piemēram, UialertViews iOS vai grauzdiņos Android, ļaujot katrai platformai rīkoties kļūdas tādā veidā, kas ir dzimts tās vidē.
Praksē, kad asinhronās operācijas laikā rodas kļūda, piemēram, datu ielāde no tīmekļa pakalpojuma, kļūda tiek pieķerta un tiek ziņota, izmantojot “ierrorreporter”. Tas ļauj lietojumprogrammai parādīt lietotājam draudzīgiem kļūdu ziņojumiem vai veikt alternatīvas darbības, piemēram, operācijas atkārtotu atkārtošanu vai bezsaistes datu ielādi.
Piemēram, ja “CategoryListViewModel` rodas kļūda, ielādējot kategorijas, kļūdas apstrādei tas var izmantot metodi“ GeneralAsynCload ”no“ baseViewModel ”. Pēc tam kļūda tiek ziņota caur “ierrorreporter”, kas izraisa atbilstošu UI paziņojumu, pamatojoties uz platformu.
Šī pieeja nodrošina, ka kļūdu apstrāde ir gan centralizēta, gan elastīga, ļaujot viegli pielāgoties dažādām platformām un scenārijiem MVVMCROSS ietvarā.
Atsauces:[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error-handing-in-in.html
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://asctom.oracle.com/ords/f?p=100%3A11%3A%3A%3A%3A%3AP11_QUESTION_ID%3A1422998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the
[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-pracices apstrādes-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