O X do Xamarin Forms — AsyncErrorHandler

Thiago Bertuzzi
Aug 1 · 3 min read

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!

AsyncErrorHandler

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!

Configurado e utilizando o AsyncErrorHandler

Vamos ao Nuget instalar o pacote AsyncErrorHandler.Fody :

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/> :

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 :

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!

Thiago Bertuzzi

Written by

Microsoft MVP,Gamer, Desenvolvedor e apaixonado por tecnologia!

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade