Módulo 13 - Quando dá errado: erros e robustez

Os três tipos de erro

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

O que você vai aprender

  • Diferenciar erro de sintaxe, de execução e de lógica.
  • Reconhecer com qual tipo de erro você está lidando.
  • Entender por que o erro de lógica é o mais traiçoeiro.
  • Associar cada tipo a como ele se manifesta.

Três jeitos de dar errado

Errar faz parte de programar, e a boa notícia é que os erros se dividem em três tipos bem distintos, cada um com sua cara e seu jeito de ser caçado. O primeiro é o erro de sintaxe: você escreveu o código de um jeito que quebra as regras da linguagem, como uma frase sem verbo. Esqueceu de fechar um parêntese, digitou uma palavra-chave errada, faltou um sinal. O computador nem tenta rodar; ele avisa de cara que não entendeu e aponta mais ou menos onde. É o erro mais amigável, porque aparece antes de o programa executar e costuma vir com uma mensagem indicando o lugar.

O segundo é o erro de execução: o código está bem escrito e começa a rodar, mas em algum momento topa com uma situação que não consegue tratar e quebra no meio. É o programa que estava funcionando e de repente para com uma mensagem de erro. As causas clássicas você já encontrou pelo curso: dividir por zero, acessar uma posição que não existe na lista, buscar uma chave ausente no dicionário, tentar abrir um arquivo que não está lá. O código está correto na forma, mas os dados ou o ambiente pregaram uma peça. O terceiro tipo é o mais perigoso de todos, e merece atenção especial.

Três painéis lado a lado. O primeiro, erro de sintaxe, mostra um código com um X vermelho e a etiqueta nem roda. O segundo, erro de execução, mostra um programa rodando que estoura no meio com um símbolo de explosão e a etiqueta quebra no meio. O terceiro, erro de lógica, mostra um programa que termina normalmente mas com um resultado errado e um rosto confuso, etiquetado resposta errada em silêncio.
Três tipos de erro: sintaxe barra antes de rodar, execução quebra no meio, lógica entrega o errado sem avisar.

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

O erro de lógica é o vilão silencioso. Nele, o código está perfeitamente escrito, roda do começo ao fim sem quebrar, e entrega uma resposta. O problema é que a resposta está errada, e nada avisa. O computador fez exatamente o que você mandou; só que o que você mandou não era o que você queria. Lembra do acumulador inicializado dentro do laço, que dá o preço do último item em vez da soma? Ou da ordem trocada dos argumentos, que calcula certo a conta errada? São erros de lógica. Eles não geram mensagem nenhuma, e é por isso que assustam: o programa parece funcionar, o cliente confia no número, e o prejuízo só aparece quando alguém percebe que a conta nunca fechou. Caçar erro de lógica é o trabalho mais fino do programador, e a ferramenta principal é o teste de mesa que você aprendeu no curso básico, mais os testes automatizados que conferem se a resposta bate com a esperada.

🎮 Jogo da aula

Que tipo de erro é esse?

Para cada situação, decida se é um erro de execução (quebra o programa) ou de lógica (roda liso, resposta errada).

Por que classificar o erro ajuda a resolver

Saber de qual tipo é o erro muda a estratégia de conserto. Se é de sintaxe, você lê a mensagem do computador, vai até o lugar apontado e corrige a escrita; costuma ser rápido. Se é de execução, você olha a mensagem, que geralmente diz o que aconteceu (divisão por zero, índice fora da lista), e descobre qual situação inesperada o código não tratou, o que leva direto à validação e ao tratamento de exceções das próximas aulas. Se é de lógica, não há mensagem para ler: você precisa comparar o que o programa faz com o que deveria fazer, usando exemplos, teste de mesa e testes automatizados, até achar onde o raciocínio escorregou. Diante de um erro, a primeira pergunta útil é: o programa nem rodou, rodou e quebrou, ou rodou e mentiu? A resposta aponta o caminho.

Teste rápido

Por que o erro de lógica é considerado o mais perigoso dos três tipos?

Perguntas frequentes

Qual a diferença entre os três tipos de erro?
Erro de sintaxe é código mal escrito que impede o programa de rodar. Erro de execução quebra o programa no meio, ao topar com uma situação que não sabe tratar. Erro de lógica deixa o programa rodar até o fim, mas entrega a resposta errada sem avisar. Da forma de aparecer, o de lógica é o mais silencioso.
Por que o erro de sintaxe é o mais fácil?
Porque ele aparece antes de o programa rodar e costuma vir com uma mensagem apontando onde está. O computador se recusa a executar até você corrigir a escrita. É chato, mas honesto: você sabe que há um problema e mais ou menos onde. Os outros dois exigem mais investigação.
Como sei se é erro de execução ou de lógica?
Pela forma como aparece. Se o programa para no meio com uma mensagem de erro, é de execução. Se ele roda até o fim e entrega um resultado, mas o resultado está errado, é de lógica. A pergunta rápida é: o programa quebrou ou mentiu? Quebrou é execução; mentiu é lógica.
Como caço um erro de lógica se não há mensagem?
Comparando o que o programa faz com o que deveria fazer, usando exemplos de entrada com a saída esperada. O teste de mesa (seguir o código passo a passo) e os testes automatizados (que conferem a resposta) são as ferramentas principais. Sem mensagem, você mesmo precisa criar os sinais que revelam o erro.
Um programa pode ter mais de um tipo de erro?
Pode, e é comum durante o desenvolvimento. Você corrige os de sintaxe primeiro, porque sem isso nada roda; depois trata os de execução, que aparecem ao testar; e por fim caça os de lógica, comparando resultados. Cada tipo tende a aparecer numa fase, mas todos podem conviver num código em construção.
Os testes automatizados pegam qual tipo de erro?
Principalmente os de lógica, que são os mais difíceis de perceber. Um teste automatizado roda o código com uma entrada conhecida e confere se a saída bate com a esperada; se não bater, revela um erro de lógica. Também ajudam a garantir que uma correção não quebrou outra coisa. São a rede de segurança contra o vilão silencioso.

Fontes

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