Usando try...catch: tentando algo e pegando o erro se acontecer

Aprenda a estrutura try...catch para lidar com erros de forma controlada no seu código.

Quando você programa, alguns trechos podem falhar.
O try...catch é como um plano de emergência: você tenta executar algo, e se der problema, trata o erro sem “quebrar tudo”.


Estrutura básica

try {
  // código que pode gerar erro
} catch (erro) {
  // o que fazer se houver erro
}
  • try: bloco “tentativa”
  • catch: bloco “resposta ao erro”

Exemplo simples

try {
  const resultado = JSON.parse("{ nome: 'Ana' }"); // JSON inválido
  console.log(resultado);
} catch (erro) {
  console.log("Ops! Não foi possível converter o JSON.");
}

Nesse caso, o código dentro de try falha e o fluxo vai para catch.


Por que isso é importante?

Sem tratamento, um erro pode interromper parte da execução.
Com try...catch, você consegue:

  • mostrar mensagem amigável ao usuário
  • registrar erro no console/log
  • manter a aplicação funcionando em outras partes

O parâmetro do catch

No catch (erro), a variável erro traz detalhes úteis:

  • erro.name (tipo do erro)
  • erro.message (mensagem)
  • erro.stack (rastreamento técnico)

Exemplo:

try {
  naoExiste();
} catch (erro) {
  console.log(erro.name);    // ReferenceError
  console.log(erro.message); // naoExiste is not defined
}

finally: sempre executa

Você também pode usar finally, que roda com sucesso ou com erro.

try {
  console.log("Tentando...");
} catch (erro) {
  console.log("Deu erro");
} finally {
  console.log("Finalizando processo");
}

Ótimo para ações de encerramento, como esconder loading.


Lançando erro manualmente com throw

Às vezes você quer validar algo e forçar um erro para tratar depois.

function validarIdade(idade) {
  if (idade < 18) {
    throw new Error("Idade mínima é 18");
  }
  return "Acesso liberado";
}

try {
  console.log(validarIdade(16));
} catch (erro) {
  console.log("Validação falhou:", erro.message);
}

Boas práticas com try...catch

  • Use em pontos realmente críticos (requisições, parse de JSON, validações).
  • Não “engula” erro silenciosamente.
  • Mostre mensagem clara para usuário, mas mantenha detalhe técnico para debug.
  • Evite colocar código demais em um único try.

Resumo da lição

  • try...catch permite tratar erros de forma controlada.
  • catch recebe o erro e ajuda a entender o que aconteceu.
  • finally sempre executa no final.
  • throw permite criar erros personalizados para validações e regras.