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
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.
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: Por que erros acontecem: as três famílias.
Os objetivos desta aula. 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.
Veja o essencial, parte por parte.
As três famílias de erro. Todo erro de programa pertence a uma de três famílias: escrita, execução ou lógica.
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 erro de lógica, o mais traiçoeiro. Erro de escrita é entregar a receita com uma frase ilegível: o cozinheiro devolve sem começar.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
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ília | Quando aparece | Como o Python reage |
|---|---|---|
| Erro de escrita (sintaxe) | Antes de rodar: o Python lê o arquivo e recusa | Mostra SyntaxError e não executa nenhuma linha |
| Erro de execução (exceção) | No meio da execução, ao chegar na instrução impossível | Mostra um traceback e interrompe o programa ali |
| Erro de lógica | Nunca reclama: o programa roda até o fim | Nenhuma 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 closedErro 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.0Sem 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.