9 de out. de 2011

Relatório de Erros do Android




Todo mundo que usa ou usou um Android já deve ter se deparado com a mensagem acima alguma vez. Ela é decepcionante para o usuário, e motivo de preocupação para o desenvolvedor: significa que há algum erro na aplicação!
Acredito que a maioria dos usuários pressionem o botão forçar fechamento, mas aqui explicarei porque isso não é o mais indicado.




Sempre que essa janela aparece é sinal de que a aplicação gerou um erro não tratado e será fechada. Tipicamente porque há um erro de programação ou até um erro de lógica durante a execução. E só há uma forma do desenvolvedor tentar consertar o problema: recebendo o relatório de erros. É justamente esse relatório que é enviado ao pressionar o botão informar.

A janela é um tanto estranha e deixa a entender que talvez informações que você não gostaria que fossem reveladas seriam enviadas. Ao deixar selecionada a opção incluir dados do sistema diversas informações são enviadas (que você pode ver ao pressionar visualizar), mas essas informações não ficam disponíveis para o desenvolvedor!
Esta captura de tela mostra como o desenvolvedor vê cada uma das suas aplicações publicadas no Market:

Note que há uma coluna ali chamada errors. Quando há um erro novo, ela fica em negrito (que é o caso).  Quando o desenvolvedor clica ali, aparece esta janela mostrando um histórico dos erros:
É um relatório relativamente completo, e é importante separar os congelamentos (freezes) dos erros (crashes), pois congelamentos geralmente acontecem quando a aplicação não responde a um comando do usuário, já os erros podem acontecer a qualquer momento (com a aplicação rodando em segundo plano, por exemplo).
E ao clicar no link dos erros, esta informação é apresentada:

Isso se chama stack trace, que é todo o caminho que o programa percorreu até acontecer o erro, mostrando inclusive em qual linha ele aconteceu! No nosso caso, foi na linha 14 do arquivo Main.java.
Claro que há outras coisas na tela, como por exemplo um link para a mensagem que o usuário possa ter enviado (aquilo digitado no campo descrição da janela de envio do relatório). Ela é opcional, mas é preciso ter consciência de que às vezes essa mensagem pode significar a diferença entre saber exatamente qual é o problema e continuar sem ter a menor noção do porque ele acontece.
Portanto, da próxima vez que essa janelinha aparecer, mande o relatório sem medo, mesmo que sem os dados do sistema! O desenvolvedor agradece, e isso o ajudará a melhorar a aplicação e impedir que novos erros aconteçam no futuro.