Lanzamiento de excepciones en JavaScript
En lecciones anteriores estudiamos dos situaciones en las que JavaScript lanza una excepción en caso de algún problema.
Sin embargo, en tu proyecto pueden haber otras situaciones que para ti sean excepcionales, pero para JavaScript no. En ese caso, puedes crear y lanzar tus propias excepciones personalizadas.
Analicemos la sintaxis necesaria para
esto. Primero, es necesario crear la excepción
usando el comando new Error, pasando
el texto de la excepción como parámetro:
new Error('texto de la excepción');
Luego, esta excepción debe lanzarse usando
el comando throw:
throw new Error('texto de la excepción');
Lanzar una excepción obliga a JavaScript
a considerar que ha ocurrido una situación excepcional.
Esto significa que dicha excepción puede ser capturada
usando la estructura try-catch y
manejada de la manera deseada.
Veamos con un ejemplo cómo usar esto. Supongamos que tenemos una función que divide un número por otro:
function div(a, b) {
return a / b;
}
Consideremos que la división por cero
está prohibida y que al intentar hacerlo debe
surgir una situación excepcional. Para ello,
verificaremos en la función si hay un intento
de dividir por 0. Si no lo hay - dividiremos,
y si lo hay - lanzaremos una excepción:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('error de división por cero');
}
}
Primero, simplemente intentemos dividir
por 0, sin capturar la excepción:
alert( div(3, 0) );
En este caso, la ejecución del script se interrumpirá
y aparecerá un error en la consola con el texto 'error
de división por cero' (compruébalo). Ahora
capturaremos nuestro error y
lo manejaremos de alguna manera:
try {
alert( div(3, 0) );
} catch (error) {
alert('está intentando dividir por 0, lo cual está prohibido');
}
En JavaScript, el intento de calcular la raíz cuadrada de un número negativo no resulta en el lanzamiento de una excepción:
let result = Math.sqrt(-1);
console.log(result); // mostrará NaN
Escribe tu propia función que calcule la raíz cuadrada de un número y que lance una excepción si la raíz se calcula a partir de un número negativo.