Lanzar tus propios errores
A veces tú quieres provocar un error porque has detectado una situación
inválida. Para eso se usa throw:
function raizCuadrada(n) {
if (n < 0) {
throw new Error("No se puede sacar la raíz de un número negativo");
}
return Math.sqrt(n);
}
Cuando se ejecuta throw, la función se interrumpe inmediatamente y el control
sube buscando un catch que lo maneje.
Lanza objetos Error, no cadenas
Aunque throw "texto" es válido, lanza siempre un objeto Error (o una
subclase). Los objetos Error llevan un message, un name y una traza
(stack) que ayudan a depurar:
throw new Error("Mensaje descriptivo");
Validar entradas: una buena costumbre
Lanzar errores tempranos cuando los argumentos no son válidos hace tu código más predecible. Es preferible fallar pronto y con un mensaje claro que producir un resultado incorrecto silencioso.
Ejemplos
Validar argumentos lanzando un error
function dividir(a, b) {
if (b === 0) {
throw new Error("No se puede dividir por cero");
}
return a / b;
}
try {
console.log(dividir(10, 2));
console.log(dividir(10, 0));
} catch (e) {
console.log("Capturado:", e.message);
}