Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hoe gaat het monster van bestsellers om fouten in MVVMCross


Hoe gaat het monster van bestsellers om fouten in MVVMCross


Het bestsellers -monster in MVVMCross verwerkt fouten met behulp van twee primaire technieken:

1. BASEVIEWMODEL -klassen voor gedeelde foutafhandeling: het bestsellers -voorbeeld maakt gebruik van een `BaseviewModel` -klasse om gedeelde code in te kapselen, inclusief foutenafhandelingsmechanismen. Deze aanpak zorgt voor gecentraliseerd beheer van gemeenschappelijke foutafhandelingslogica in verschillende weergavemodellen. De methode `Generalasyncload` is bijvoorbeeld gedefinieerd in het` BaseviewModel` en wordt door verschillende weergavemodellen gebruikt om gegevens asynchroon te laden. Deze methode kan een foutafhandelingslogica bevatten die over de toepassing wordt gedeeld.

2. Foutrouter op app-niveau: het monster maakt ook gebruik van een app-niveau "foutrouter" om te beheren hoe fouten worden gepropageerd van weergavemodellen naar de gebruikersinterface. Dit omvat het gebruik van een geïnjecteerd object, meestal een `Ierrorreporter`, die wordt geïnitialiseerd als een singleton tijdens de app -constructie. Elk platformspecifiek UI-project onderschrijft evenementen van deze singleton met behulp van een `Ierrorsource`-interface. Deze installatie maakt platformspecifieke foutweergavemechanismen mogelijk, zoals UialertViews op iOS of toasts op Android, waardoor elk platform fouten kan verwerken op een manier die inheems is in zijn omgeving.

In de praktijk, wanneer er een fout optreedt tijdens een asynchrone bewerking, zoals het laden van gegevens van een webservice, wordt de fout gevangen en gerapporteerd met behulp van de `IerrorReporter`. Hierdoor kan de toepassing gebruiksvriendelijke foutmeldingen weergeven of alternatieve acties ondernemen, zoals het opnieuw proberen van de bewerking of het laden van offline gegevens.

Als een `categoryListViewModel` bijvoorbeeld een fout tegenkomt tijdens het laden van categorieën, kan het de methode` generalAsyncload` gebruiken van de `BaseviewModel` om de fout te verwerken. De fout wordt vervolgens gerapporteerd via de `IerrorReporter`, die de juiste UI -melding op basis van het platform activeert.

Deze benadering zorgt ervoor dat foutafhandeling zowel gecentraliseerd als flexibel is, waardoor eenvoudige aanpassing aan verschillende platforms en scenario's binnen het MVVMCross -framework mogelijk is.

Citaten:
[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error-handling-in.html
[2] https://lealware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://asktom.oracle.com/ords/f?p=100%3A11%3A%3A%3A%3A%3A%3A1_question_id%3A1422998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-to-handle-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-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