Módulo 14 - Tratamento básico de erros

Por que erros acontecem: as três famílias

9 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

Velocidade

O que você vai aprender

  • Aceitar que erro é parte estrutural da programação, não sinal de fracasso.
  • Distinguir erro de escrita, erro de execução e erro de lógica.
  • Identificar em qual momento cada família aparece: antes, durante ou nunca.
  • Reconhecer por que o erro de lógica é o mais perigoso dos três.

As três famílias de erro

Vamos começar desmontando uma expectativa: não existe programa real que nasceu sem erro. Os sistemas do seu banco, o aplicativo de mensagens no seu bolso e o próprio Python passaram por milhares de correções antes de chegar até você, e continuam recebendo correções hoje. Errar não é o acidente da programação; é o ciclo normal dela. O que separa quem evolui de quem trava é saber classificar o erro que apareceu, porque cada família se corrige de um jeito.

FamíliaQuando apareceComo o Python reage
Erro de escrita (sintaxe)Antes de rodar: o Python lê o arquivo e recusaMostra SyntaxError e não executa nenhuma linha
Erro de execução (exceção)No meio da execução, ao chegar na instrução impossívelMostra um traceback e interrompe o programa ali
Erro de lógicaNunca reclama: o programa roda até o fimNenhuma mensagem; só o resultado sai errado

As três famílias de erro. Repare que a mais silenciosa é a mais perigosa.

Guarde a tabela como mapa mental. Quando algo der errado nos seus programas, a primeira pergunta não é o que eu fiz de errado, e sim de qual família é esse erro. A resposta diz onde procurar: na grafia do código, no dado que chegou durante a execução ou no raciocínio da fórmula.

Antes de rodar e no meio do caminho

O erro de escrita é o mais fácil de entender: você quebrou uma regra de grafia da linguagem, como esquecer de fechar um parêntese ou os dois-pontos do if. O Python lê o arquivo inteiro antes de executar e, se a escrita estiver quebrada, recusa o programa na hora. Nenhuma linha roda, nem as corretas. É como entregar uma redação com uma frase pela metade: o leitor para ali.

  File "programa.py", line 1
    print("Olá, mundo!"
         ^
SyntaxError: '(' was never closed

Erro de escrita: o parêntese aberto nunca foi fechado. O programa nem começou a rodar.

O erro de execução é diferente. A escrita está perfeita, o programa começa a rodar, executa várias linhas e, de repente, chega numa instrução impossível de cumprir. Converter a palavra vinte em número inteiro, por exemplo: a linha está gramaticalmente correta, mas o valor não permite a operação. Nesse momento o Python levanta uma exceção, mostra o relatório do problema e para.

print("O programa começou.")
idade = int("vinte")  # aqui nasce a exceção: ValueError
print("Esta linha nunca executa.")

O primeiro print funciona; a conversão impossível interrompe o programa; o segundo print nunca roda.

Erro de escrita (SyntaxError)

  • Aparece ANTES de qualquer linha rodar
  • O problema está na grafia do código
  • Nada do programa executa
  • Corrige-se olhando a linha apontada e os símbolos

Erro de execução (exceção)

  • Aparece DURANTE a execução
  • O problema está no dado ou na operação
  • Tudo antes da linha do erro executou normalmente
  • Corrige-se validando o dado ou tratando com try/except

O erro de lógica, o mais traiçoeiro

A terceira família não gera tela vermelha nenhuma, e é exatamente por isso que assusta. No erro de lógica, a escrita está correta e todas as operações são possíveis; o problema é que o raciocínio estava errado. O programa roda do início ao fim, imprime um resultado com toda a confiança do mundo, e o resultado está errado. Veja um exemplo curto que já pegou muita gente.

nota1 = 8.0
nota2 = 6.0
nota3 = 10.0
media = nota1 + nota2 + nota3 / 3
print(media)  # mostra 17.333... em vez de 8.0

Sem parênteses, só a nota3 é dividida por 3. O Python obedece a ordem das operações, não a intenção.

Nenhuma mensagem de erro vai aparecer aqui, porque para o Python está tudo certo: ele fez exatamente a conta que você escreveu. Quem precisa perceber que 17.3 é uma média impossível para notas de 0 a 10 é você. A defesa contra essa família é o hábito de desconfiar do resultado: rodar o programa com valores cuja resposta você conhece de cabeça e conferir se bate. É o mesmo princípio que o ValorFinal usa nas calculadoras do portal, com testes automatizados comparando o resultado contra casos validados.

Nas próximas aulas, o foco fica nas duas primeiras famílias, porque elas geram mensagens que dá para aprender a ler. Mas leve desta aula o alerta: quando um programa seu rodar sem erro nenhum, isso prova apenas que ele rodou. Se o resultado está certo, só o teste diz.

Teste rápido

Um programa calcula a média de três notas, roda sem nenhuma mensagem de erro e mostra 17.3. Que família de erro é essa?

Perguntas frequentes

Programadores experientes também erram?
Todos os dias, e sem exceção. A diferença não está em errar menos na primeira tentativa, e sim em identificar a família do erro em segundos e corrigir rápido. Grandes empresas mantêm equipes inteiras só para encontrar e corrigir defeitos em produção.
Qual das três famílias é a mais comum para iniciantes?
No comecinho, o erro de escrita domina: parêntese sem fechar, aspas faltando, dois-pontos esquecido. Com algumas semanas de prática, ele quase desaparece e os erros de execução assumem a liderança, principalmente os ligados a input e conversão de tipos.
Por que o erro de lógica é chamado de traiçoeiro se ele não trava nada?
Justamente por não travar. Os outros dois gritam na tela e apontam a linha; o de lógica passa despercebido e pode viver meses num programa entregando resultado errado. Em sistemas de dinheiro ou de saúde, é a família que causa os prejuízos sérios.
O que significa a palavra exceção?
É o nome técnico do erro de execução: um evento excepcional que impede uma instrução de ser cumprida. O Python cria um objeto descrevendo o problema e, se ninguém tratar, o programa para e mostra o traceback. A aula 4 ensina a tratar.
Erro de sintaxe e SyntaxError são a mesma coisa?
Sim. Sintaxe é o conjunto de regras de escrita da linguagem, e SyntaxError é o nome oficial que o Python dá quando uma regra dessas é quebrada. IndentationError, que você conheceu no módulo 7, é um tipo especial de erro de sintaxe ligado aos espaços.
Como me protejo do erro de lógica se ele não gera mensagem?
Testando com casos cuja resposta você conhece antes. Se a média de 8, 6 e 10 tem que dar 8, rode o programa com esses valores e confira. Programadores profissionais automatizam essa conferência com testes; no seu nível, conferir na mão já elimina a maioria dos casos.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.