O X do Xamarin Forms — AsyncErrorHandler

Image for post
Image for post

Fala galera,

tudo beleza?

Se seu app não tem pelo menos um método Async , seria bom rever seu APP hehehehehhe.

Utilizamos métodos Async, principalmente, para realizar ações ou obter dados sem "Travar" nosso app não prejudicando a experiencia do Usuário.

Afinal quem quer ver uma tela congelada enquanto os dados são baixados?

Beleza, mas e se der erro ? try catch , certo ? Então se eu te disser que tem uma forma muito facil de tratar erros em métodos Async automaticamente, e mais que você pode centralizar em um lugar Só ?

Tudo isso graças ao Fody -> AsyncErrorHandler !

Quem me deu essa dica foi meu amigo Rodrigo Amaro e desde então eu venho utilizando com sucesso!

Bora conferir , para você entender o que estou falando!

Antes de mais nada deixa eu explicar a Ideia. Imagine que eu tenho o seguinte método async :

Após o código compilar o componente o Fody vai procurar seu código Async e adicionar o Try / Catch de maneira automática :

Fod.. Quem ? Pra resumir bem , O Fody é uma ferramenta extensível e poderosa para Weaving que permite manipular um Assembly adicionando uma parte de código na compilação.

Ou seja, esse cara vai fazer o trampo para nós e adicionar o Try Catch em todos os nossos métodos Async, evitando algumas linhas de código na hora de criarmos nosso App :D.

Estas linhas vão existir apenas no código compilado, mas teremos como utilizar o erro gerado e tratar. Mostrarei logo abaixo!

Image for post
Image for post

Vamos ao Nuget instalar o pacote AsyncErrorHandler.Fody :

Image for post
Image for post

Instale nos projetos que deseja tratar os erros. No meu caso adicionei no projeto compartilhado.

Em seguida precisamos criar um arquivo chamado FodyWeavers.xml com a tag <AsyncErrorHandler/> :

<Weavers>
<AsyncErrorHandler/>
</Weavers>

Agora vamos criar a Classe AsyncErrorHandler :

No lugar onde esta o Debug.WriteLine(exception); , você pode adicionar seu tratamento de erro. Guardar em um arquivo, enviar via uma api de log, enviar pro Appcenter e etc…

Agora para simular um Erro eu vou criar um método com problemas na Inicialização do nosso App :

E agora vamos ver em Debug o que acontece :

Image for post
Image for post

Viram ? Ao forçar um caminho que não existe e mesmo sem ter o Try / Catch o AsyncErrorHandler foi acionado! isso acontece pois o Try/Catch foi adicionado apenas no App , após o Build :D

Bem creio que o AsyncErrorHandler nos poupa de varias linhas de código, alem de centralizar o tratamento de erros :)

Caso queira baixar o código utilizado no Exemplo: Clique aqui.

Quer ver outros artigos sobre Xamarin ? Clique aqui.

Espero ter ajudado!

Aquele abraço!

Written by

Microsoft MVP,Gamer, Desenvolvedor e apaixonado por tecnologia!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store