Módulo 13 - Quando dá errado: erros e robustez
Exceções: tentar e capturar
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026
O que você vai aprender
- Entender o que é uma exceção (um erro de execução sinalizado).
- Usar o tentar/capturar para interceptar e tratar erros.
- Substituir a quebra bruta por uma mensagem amigável.
- Saber quando faz sentido capturar uma exceção.
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: Exceções: tentar e capturar.
Os objetivos desta aula. Entender o que é uma exceção (um erro de execução sinalizado). Usar o tentar/capturar para interceptar e tratar erros. Substituir a quebra bruta por uma mensagem amigável. Saber quando faz sentido capturar uma exceção.
Veja o essencial, parte por parte.
A rede de segurança do programa. Exceção é um erro de execução sinalizado; se ninguém trata, o programa quebra.
Tratar o erro com elegância. O que você faz dentro do capturar define a qualidade do seu programa.
Quando capturar e quando deixar quebrar. Uma tentação de iniciante é embrulhar tudo em tentar/capturar para o programa nunca quebrar.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
A rede de segurança do programa
Alguns trechos de código são naturalmente arriscados: converter um texto que o usuário digitou em número (e se ele digitou letras?), abrir um arquivo (e se não existir?), acessar a internet (e se a conexão cair?). Nessas horas, o programa pode topar com uma exceção, o nome técnico de um erro de execução sinalizado. Sem tratamento, a exceção sobe e derruba o programa, fechando o app ou mostrando uma tela de erro feia. Mas você não precisa aceitar isso. As linguagens oferecem uma rede de segurança chamada tentar e capturar: você embrulha o trecho arriscado num bloco tentar e, logo depois, escreve um bloco capturar dizendo o que fazer se der erro. Se a exceção acontecer dentro do tentar, o programa não quebra; ele pula direto para o capturar, onde você assume o controle.
tentar
idade <- converterParaNumero(textoDigitado)
escreva("Você tem ", idade, " anos")
capturar erro
escreva("Por favor, digite a idade usando apenas números")
fim
// se o usuário digitou "abc", o converter falha, mas o programa
// não quebra: pula para o capturar e mostra a mensagem amigávelO trecho arriscado fica no tentar. Se der erro, o programa desvia para o capturar em vez de quebrar.
Tratar o erro com elegância
O que você faz dentro do capturar define a qualidade do seu programa. A opção mais básica é avisar o usuário com uma mensagem clara e amigável: em vez de um críptico erro de conversão, um educado por favor, digite apenas números. Mas dá para ir além. Você pode oferecer uma alternativa (usar um valor padrão quando o arquivo de configuração não abre), tentar de novo (reconectar quando a internet cai), ou registrar o problema para investigar depois, mantendo o programa vivo. O ponto central é que o capturar devolve a você o controle numa situação que, sem ele, terminaria em quebra. Um programa robusto não é um que nunca encontra erros; é um que sabe o que fazer quando os encontra. E a diferença que o usuário sente é enorme: um app que trata erros passa confiança, enquanto um que fecha do nada parece amador.
🎮 Jogo da aula
Onde falta a rede
Este código lê a idade digitada e pode quebrar se o usuário digitar letras. Toque na linha que deveria estar protegida por um tentar/capturar.
Quando capturar e quando deixar quebrar
Uma tentação de iniciante é embrulhar tudo em tentar/capturar para o programa nunca quebrar. Isso é um erro sutil. Capturar uma exceção e não fazer nada com ela, ou esconder o erro sob o tapete, transforma uma quebra visível num erro de lógica silencioso, que é pior. A boa prática é capturar apenas os erros que você sabe como tratar de forma útil: o usuário digitou algo inválido, o arquivo opcional não existe, a rede oscilou. Para esses, você tem uma resposta sensata. Já erros que revelam um bug de programação, uma variável que nunca deveria estar vazia, uma condição impossível, muitas vezes é melhor deixar aparecer durante o desenvolvimento, para você consertar a causa, em vez de mascarar. Capturar é uma ferramenta de tratar o esperado-mas-ruim, não de varrer bugs para debaixo do tapete. Usada assim, ela deixa o programa robusto; usada para silenciar tudo, ela esconde problemas.
Teste rápido
Qual é o principal benefício de usar tentar/capturar ao redor de um trecho arriscado?
Perguntas frequentes
- O que é uma exceção?
- É um erro de execução sinalizado pelo programa quando ele topa com uma situação que não consegue tratar, como dividir por zero ou abrir um arquivo ausente. A exceção interrompe o fluxo normal. Se ninguém a captura, o programa quebra; se capturada, você trata o problema e segue.
- Como funciona o tentar/capturar?
- Você marca o trecho arriscado com um bloco tentar e escreve, logo depois, um bloco capturar com o que fazer se der erro ali. Se uma exceção acontece dentro do tentar, o programa pula para o capturar em vez de quebrar. É uma rede de segurança que ampara a falha e devolve o controle a você.
- O que devo fazer dentro do capturar?
- Tratar o erro de forma útil: mostrar uma mensagem amigável, usar um valor padrão, tentar de novo, ou registrar o problema para investigar. O objetivo é manter o programa em pé e o usuário informado. O que não vale é capturar e não fazer nada, o que esconde o erro e cria um problema silencioso.
- Devo embrulhar todo o código em tentar/capturar?
- Não. Capture apenas os erros que você sabe tratar de forma sensata (entrada inválida, arquivo opcional ausente, rede oscilando). Erros que revelam bugs de programação muitas vezes é melhor deixar aparecer no desenvolvimento, para consertar a causa. Capturar tudo mascara bugs e transforma quebras visíveis em erros silenciosos.
- Capturar uma exceção conserta o erro?
- Não conserta a causa; apenas evita que o erro derrube o programa e dá a você a chance de reagir. Se o usuário digitou letras onde esperava número, o capturar não corrige o que ele digitou, mas permite pedir de novo educadamente. Consertar a causa (validar antes, arrumar o bug) é um passo separado.
- Exceção é a mesma coisa que erro de execução?
- São intimamente ligados: a exceção é a forma como um erro de execução é sinalizado e propagado pelo programa. Quando ocorre uma divisão por zero, o programa levanta uma exceção. Se você não a captura, ela vira aquela quebra com mensagem de erro. O tentar/capturar é o mecanismo para interceptá-la.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.