programandoai

Ler mensagens de erro sem pânico

Todo mundo que programa, do primeiro dia até depois de anos de experiência, escreve código que não roda de primeira. O que separa quem trava de quem avança é o hábito de ler a mensagem em vez de só encarar a tela travada.

Estudar esta lição interativa →

Um erro no console não é um veredito de que você fez algo errado como pessoa: é uma pista. As mensagens de erro modernas costumam apontar quase exatamente onde e por que algo deu errado, e aprender a ler essa pista, em vez de entrar em pânico e travar, é uma das habilidades mais valiosas de toda a programação. Ninguém, nem quem programa há décadas, escreve código perfeito de primeira; a diferença está no que se faz depois do erro aparecer.

console.log("Antes do erro, esta linha roda normalmente.");
console.log(saldoConta);
console.log("Esta linha nunca é alcançada.");

Rode e leia a mensagem no console com atenção.

Repare que o console mostrou algo como ReferenceError: saldoConta is not defined. Traduzindo por partes: ReferenceError é o tipo do erro (um problema de "referência", de tentar usar algo que não existe); saldoConta is not defined diz exatamente qual nome não foi encontrado. A mensagem também aponta a linha onde isso aconteceu. Com essas duas informações, o tipo do erro e o nome envolvido, já dá para formar uma hipótese bem específica do que corrigir.

Pense numa mensagem de erro como a etiqueta de um remédio: ela não resolve o problema sozinha, mas diz exatamente o que está errado e onde procurar a solução. Ignorar a etiqueta e tentar adivinhar o remédio certo é bem mais lento (e mais frustrante) do que simplesmente ler o que está escrito nela.

Repare também que a linha antes do erro rodou normalmente, e a linha depois nunca chegou a rodar. Isso é uma pista valiosa por si só: o programa executa até onde consegue, e para exatamente no ponto do problema, o que já reduz bastante onde procurar.

O hábito de três perguntas

Diante de qualquer erro, três perguntas na ordem certa resolvem a maioria dos casos: (1) qual é o tipo do erro (a primeira palavra, como ReferenceError ou SyntaxError)? (2) qual nome ou trecho a mensagem menciona? (3) em qual linha isso apontou? Essas três respostas, sozinhas, já resolvem boa parte dos casos sem precisar de mais ajuda nenhuma.

Erro de referência é diferente de erro de sintaxe

Um ReferenceError (como este) acontece durante a execução, numa linha específica: o código roda normalmente até chegar ali. Já um erro de sintaxe (visto de relance no Módulo 1, quando faltou uma aspa) impede o programa de sequer começar a rodar, porque a estrutura do código está quebrada antes de qualquer linha ser executada. Essa distinção ajuda a diagnosticar mais rápido: "o programa chegou a fazer alguma coisa antes de travar?"

console.log("Antes do erro, esta linha roda normalmente.");
console.log(saldoConta);
console.log("Esta linha nunca é alcançada.");

Crie a variável saldoConta antes de usá-la.

← Voltar ao índice do curso