⊗jsSpExcThr 145 of 294 menu

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.

bysvesbnid