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);
}