A amostra dos best -sellers no MVVMcross lida com erros usando duas técnicas primárias:
1. BaseViewModel Classes para manuseio de erros compartilhados: a amostra dos best -sellers utiliza uma classe `baseViewModel` para encapsular o código compartilhado, incluindo mecanismos de manuseio de erros. Essa abordagem permite o gerenciamento centralizado da lógica comum de manuseio de erros em diferentes modelos de exibição. Por exemplo, o método `generalAsyncload` é definido no` BaseViewModel` e é usado por vários modelos de exibição para carregar dados de forma assíncrona. Este método pode incluir a lógica de manuseio de erros compartilhada em todo o aplicativo.
2. O roteador de erro no nível do aplicativo: a amostra também emprega um "roteador de erro" no nível do aplicativo para gerenciar como os erros são propagados dos modelos de exibição para a interface do usuário. Isso envolve o uso de um objeto injetado, normalmente um `iErRRorReporter`, que é inicializado como um singleton durante a construção de aplicativos. Cada projeto de interface do usuário específico da plataforma assina eventos deste singleton usando uma interface `ierrorrorSource '. Essa configuração permite que os mecanismos de exibição de erros específicos da plataforma, como o UialerTViews no iOS ou torradas no Android, permitindo que cada plataforma lide com erros de uma maneira que seja nativa em seu ambiente.
Na prática, quando ocorre um erro durante uma operação assíncrona, como o carregamento de dados de um serviço da Web, o erro é capturado e relatado usando o `iErrRorReporter`. Isso permite que o aplicativo exiba mensagens de erro fácil de usar ou realizar ações alternativas, como tentar novamente a operação ou carregar dados offline.
Por exemplo, se um `categoryListViewModel` encontrar um erro ao carregar as categorias, ele poderá usar o método` generalAsyncload` do `BaseViewModel` para lidar com o erro. O erro é então relatado através do `IerrRorReporter`, que aciona a notificação apropriada da II com base na plataforma.
Essa abordagem garante que o manuseio de erros seja centralizado e flexível, permitindo uma adaptação fácil a diferentes plataformas e cenários dentro da estrutura MVVMCROSS.
Citações:[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-guggestestway-to-handle-eceptions-during-in-a-mvmcross-aplicação
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestpellers.tuouch/appdelegate.cs
[6] https://discourse.getdbt.com/t/how-to-handle-test-dailures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices-handling-errors
[8] https://stackoverflow.com/questions/15697523/running-sample-projects-in-mvvmcross-v3-t-tuna
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx