O X do Xamarin Forms — AsyncErrorHandler

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

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!