DevPath · Aprenda a programar ESPTEN

Tratamento de erros

Lançar erros com throw

Lançar seus próprios erros

Às vezes você quer provocar um erro porque detectou uma situação inválida. Para isso usa-se throw:

function raizQuadrada(n) {
  if (n < 0) {
    throw new Error("Não é possível extrair a raiz de um número negativo");
  }
  return Math.sqrt(n);
}

Quando throw é executado, a função é interrompida imediatamente e o controle sobe procurando um catch que o trate.

Lance objetos Error, não strings

Embora throw "texto" seja válido, lance sempre um objeto Error (ou uma subclasse). Os objetos Error carregam uma message, um name e um rastro (stack) que ajudam a depurar:

throw new Error("Mensagem descritiva");

Validar entradas: um bom hábito

Lançar erros cedo quando os argumentos não são válidos torna seu código mais previsível. É preferível falhar logo e com uma mensagem clara do que produzir um resultado incorreto de forma silenciosa.

Exemplos

Validar argumentos lançando um erro

function dividir(a, b) {
  if (b === 0) {
    throw new Error("Não é possível dividir por zero");
  }
  return a / b;
}
try {
  console.log(dividir(10, 2));
  console.log(dividir(10, 0));
} catch (e) {
  console.log("Capturado:", e.message);
}
Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
← try, catch e finallyTipos de erro e erros personalizados →