Vzorec uspešnic v MVVMcross obravnava napake z dvema glavnima tehnikama:
1. Razredi BaseViewModel za ravnanje z deljenimi napakami: Vzorec uspešnic uporablja razred `BaseViewModel` za zajemanje skupne kode, vključno z mehanizmi za ravnanje z napakami. Ta pristop omogoča centralizirano upravljanje skupne logike napak v različnih modelih pogleda. Na primer, metoda „GeneralSyncload“ je opredeljena v `BaseViewModel 'in jo različni modeli pogleda uporabljajo za asinhrono nalaganje podatkov. Ta metoda lahko vključuje logiko ravnanja z napakami, ki se deli v aplikaciji.
2. Usmerjevalnik napak na ravni aplikacije: Vzorec uporablja tudi "usmerjevalnik napak na ravni aplikacije", da upravlja z razmnoževanjem napak iz modelov pogleda na uporabniški vmesnik. To vključuje uporabo vbrizganega predmeta, običajno `ierrorReporter", ki je inicializiran kot singleton med gradnjo aplikacij. Vsak projekt uporabniškega vmesnika, specifičnega za platformo, se naroči na dogodke iz tega Singletona z uporabo vmesnika `ierrorsource`. Ta nastavitev omogoča mehanizmi za prikaz napak, specifičnih za platformo, kot so UialertViews na iOS ali zdravici na Androidu, kar omogoča vsaki platformi, da obvlada napake na način, ki je domač v njegovem okolju.
V praksi, ko pride do napake med asinhrono operacijo, kot je nalaganje podatkov iz spletne storitve, se napaka ujame in poroča z uporabo "ierrorRorPorter". To aplikaciji omogoča, da prikaže uporabniku prijazna sporočila o napakah ali sprejme alternativna dejanja, kot je ponovna ponovitev operacije ali nalaganje podatkov brez povezave.
Na primer, če `kategoristViewModel` naleti na napako med nalaganjem kategorij, lahko za reševanje napake uporabi metodo„ GeneralSyncload “iz` BaseViewModel '. Napaka se nato poroča prek `ierrorReporter", ki sproži ustrezno obvestilo uporabniškega vmesnika na podlagi platforme.
Ta pristop zagotavlja, da je ravnanje z napakami centralizirano in prilagodljivo, kar omogoča enostavno prilagajanje različnim platformam in scenarijem v okviru MVVMcross.
Navedbe:[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%3AP11_QUESTION_ID%3A1422998100346727312
[4] https://stackoverflow.com/Questions/10411352/what-is-the-shegest-way-to-to-handle-exceptions-reving-in-mvvmcross-application
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdeli.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