Módulo 14 - Tratamento básico de erros
Lendo mensagens de erro: a anatomia do traceback
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Reconhecer as partes fixas de um traceback: cabeçalho, localização e veredito.
- Aplicar a regra de ouro: ler de baixo para cima, tipo e mensagem primeiro.
- Localizar o arquivo e a linha do problema pelos campos File e line.
- Traduzir três tracebacks reais para português claro, sem susto.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Lendo mensagens de erro: a anatomia do traceback.
Os objetivos desta aula. Reconhecer as partes fixas de um traceback: cabeçalho, localização e veredito. Aplicar a regra de ouro: ler de baixo para cima, tipo e mensagem primeiro. Localizar o arquivo e a linha do problema pelos campos File e line. Traduzir três tracebacks reais para português claro, sem susto.
Veja o essencial, parte por parte.
A anatomia do traceback. Traceback é o relatório de erro do Python: sempre com as mesmas partes, na mesma ordem.
A regra de ouro: de baixo para cima. A última linha é o conteúdo da carta: a notícia em si, o que aconteceu.
Treino: três tracebacks reais, comentados. No Playground, provoque cada um destes três erros de propósito e compare com os tracebacks da aula.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
A anatomia do traceback
Quando uma exceção derruba o programa, o interpretador imprime um relatório chamado traceback. O nome vem de rastrear de volta: ele refaz o caminho que o programa percorreu até o ponto do desastre. Para o iniciante, aquele bloco de texto parece punição; para quem sabe ler, é o Python entregando o culpado com endereço e foto. Veja um traceback real, gerado por um programa de duas linhas que tenta converter texto em número.
Traceback (most recent call last):
File "conversao.py", line 2, in <module>
idade = int(texto)
^^^^^^^^^^
ValueError: invalid literal for int() with base 10: 'vinte'Um traceback completo. Cinco linhas, quatro informações: o aviso, o endereço, o código e o veredito.
- Cabeçalho: Traceback (most recent call last) avisa que o relatório começou e que a chamada mais recente vem por último.
- Localização: File "conversao.py", line 2 diz o arquivo e a linha; in <module> indica que o erro está no corpo principal, fora de qualquer função.
- A linha do código: o Python copia a linha exata que estourou, para você nem precisar abrir o arquivo.
- A seta: os acentos circunflexos (^) sublinham o trecho preciso da linha que causou o problema.
- O veredito: a última linha traz o tipo do erro (ValueError) e a mensagem, que aqui até mostra o valor culpado: 'vinte'.
Traduzindo o veredito para português: valor inválido para int() na base 10. Ou seja, a função int() recebeu a palavra vinte e não conseguiu transformá-la em número. Repare que a mensagem entrega até o valor problemático entre aspas. O Python não esconde nada; ele só fala em inglês técnico.
A regra de ouro: de baixo para cima
O instinto de todo mundo é ler o traceback como se lê um texto: de cima para baixo. Resista. A informação mais valiosa mora na última linha, o tipo e a mensagem do erro, e é por ela que a leitura deve começar. Só depois de saber O QUE aconteceu vale a pena subir para descobrir ONDE: o campo line e a linha de código copiada. Em programas grandes, o traceback pode ter dezenas de linhas mostrando função chamando função; a última linha continua sendo o resumo, e a de cima dela, o endereço mais próximo do crime.
- Leia a ÚLTIMA linha: qual é o tipo (ValueError? TypeError?) e o que a mensagem diz.
- Suba uma linha por vez até achar o primeiro File que aponta para um arquivo SEU.
- Anote o número da linha e olhe o trecho de código copiado, com a seta.
- Vá até essa linha no seu editor e corrija com a informação do tipo em mãos.
Um detalhe prático que economiza tempo: a mensagem da última linha é a melhor coisa para pesquisar na internet quando você não entender o erro. Copie o tipo e a mensagem, sem os seus nomes de variáveis, e a busca devolve gente que passou pelo mesmo problema. Essa é uma das habilidades mais usadas da profissão, e ninguém conta para o iniciante.
Treino: três tracebacks reais, comentados
Teoria vista, hora do treino. Abaixo estão três tracebacks reais, gerados por programas curtos no Python 3.12. Para cada um, aplique o método: última linha primeiro, depois o endereço. Tente traduzir sozinho antes de ler a legenda.
Traceback (most recent call last):
File "saudacao.py", line 2, in <module>
print(nomme)
^^^^^
NameError: name 'nomme' is not defined. Did you mean: 'nome'?Traceback 1. Veredito: NameError, o nome nomme não existe. O programa criou a variável nome e tentou usar nomme, com erro de digitação. O Python 3.12 até sugere a correção: Did you mean: 'nome'?
Traceback (most recent call last):
File "soma.py", line 1, in <module>
total = "10" + 5
~~~~~^~~
TypeError: can only concatenate str (not "int") to strTraceback 2. Veredito: TypeError, só dá para concatenar texto com texto. A linha 1 tentou somar o texto "10" com o número 5; os tils e a seta marcam a operação inteira e o operador culpado.
Traceback (most recent call last):
File "media.py", line 3, in <module>
media = soma / quantidade
~~~~~^~~~~~~~~~~~
ZeroDivisionError: division by zeroTraceback 3. Veredito: ZeroDivisionError, divisão por zero. Na linha 3, a variável quantidade valia 0. O erro real quase nunca está na divisão em si, e sim em quem deixou o zero chegar até ela.
Teste rápido
Apareceu um traceback de 15 linhas na sua tela. Qual é o primeiro passo para entendê-lo?
Perguntas frequentes
- Por que o traceback é em inglês? Dá para traduzir?
- As mensagens de erro fazem parte do interpretador e são em inglês por padrão, sem opção oficial de tradução. A boa notícia: o vocabulário é pequeno e repetitivo. Com uma dúzia de erros lidos, você reconhece os padrões sem precisar traduzir palavra por palavra.
- O que significa in <module> no traceback?
- Indica que o erro aconteceu no corpo principal do arquivo, fora de qualquer função. Quando o erro estoura dentro de uma função que você definiu com def, aparece o nome dela no lugar, como in calcular_media. É assim que o traceback mostra o caminho das chamadas.
- Por que às vezes o traceback mostra vários blocos de File e line?
- Porque o erro aconteceu dentro de uma função que foi chamada por outra, que foi chamada por outra. Cada bloco é uma parada do caminho, da mais antiga (em cima) à mais recente (embaixo). Leia a última linha para o veredito e procure o File mais próximo dela que seja um arquivo seu.
- O que são a seta (^) e os tils (~) embaixo da linha de código?
- São marcadores de precisão que o Python moderno (3.11 em diante) adiciona: os tils sublinham a expressão envolvida no erro e a seta aponta o operador ou o trecho exato do problema. Em versões antigas esses marcadores não existiam ou eram menos precisos.
- Vale a pena copiar a mensagem de erro e pesquisar na internet?
- Vale, e é prática profissional comum. Copie o tipo e a mensagem da última linha, retirando as partes específicas suas, como nomes de variáveis e de arquivos. Praticamente todo erro de iniciante já foi perguntado e respondido publicamente em algum fórum.
- E quando o traceback aponta uma linha que parece correta?
- Acontece, e costuma significar que o problema nasceu antes e só estourou ali. O exemplo clássico é a divisão por zero: a linha da divisão está certa, mas alguém deixou o zero chegar nela. Use a linha apontada como ponto de partida e investigue de onde veio o valor.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.