Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo manejan los bestsellers los errores de muestra en mvvmcross?


¿Cómo manejan los bestsellers los errores de muestra en mvvmcross?


La muestra de los bestsellers en MVVMCross maneja errores utilizando dos técnicas principales:

1. Clases de BaseViewModel para manejo de errores compartidos: la muestra de bestsellers utiliza una clase `BaseViewModel` para encapsular el código compartido, incluidos los mecanismos de manejo de errores. Este enfoque permite la gestión centralizada de la lógica de manejo de errores comunes en diferentes modelos de vista. Por ejemplo, el método `GeneralSynCload` se define en el` BaseViewModel` y es utilizado por varios modelos de vista para cargar datos de forma asincrónica. Este método puede incluir la lógica de manejo de errores que se comparte en la aplicación.

2. Enrutador de error a nivel de aplicación: la muestra también emplea un "enrutador de error" a nivel de aplicaciones para administrar cómo se propagan los errores de los modelos de vista a la interfaz de usuario. Esto implica el uso de un objeto inyectado, típicamente un 'ierrorreporter`, que se inicializa como un singleton durante la construcción de la aplicación. Cada proyecto de IU específico de la plataforma se suscribe a eventos de este singleton utilizando una interfaz 'ierrorsource`. Esta configuración permite mecanismos de visualización de errores específicos de la plataforma, como UialertViews en iOS o tostadas en Android, lo que permite que cada plataforma maneje los errores de una manera nativa de su entorno.

En la práctica, cuando se produce un error durante una operación asincrónica, como la carga de datos de un servicio web, el error se captura e informa utilizando el `ierrorreporter`. Esto permite que la aplicación muestre mensajes de error fáciles de usar o tome acciones alternativas como volver a intentar la operación o cargar datos fuera de línea.

Por ejemplo, si un `CategoryListViewModel` encuentra un error al cargar categorías, puede usar el método` GeneralSynCload` del `BaseViewModel` para manejar el error. Luego, el error se informa a través del `IerrorReporter`, que desencadena la notificación de UI apropiada basada en la plataforma.

Este enfoque asegura que el manejo de errores sea centralizado y flexible, lo que permite una fácil adaptación a diferentes plataformas y escenarios dentro del marco MVVMCross.

Citas:
[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-mvvmcrossframework/
[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-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-mvvvmcross-v3-hot-tuna
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx