excepciones-en-javascript

Cómo usar excepciones en JavaScript

Las excepciones son eventos que ocurren durante la ejecución de un programa que interrumpen su flujo normal (generalmente representa un error ocurrido en el programa).

Cuando se lanza una excepción, se interrumpe la ejecución del código normal y el control se transfiere al manejador de excepciones (try…catch) más cercano, si existe.

Es decir, cuando se produce una Excepcion esta puede,

  • Ser capturada por un bloque try-catch
  • Si no, pasa a la función que invocó a la que genero el error

Si no se maneja, el programa se detiene 💥

Manejo de excepciones

Lanzar excepciones

Podemos lanzar excepciones en JavaScript utilizando la palabra clave throw. Esto permite indicar que ha ocurrido un error y proporcionar información adicional sobre él.

La sintaxis es la siguiente:

throw new Error("Mensaje de error");

Veamos un ejemplo sencillo:

function validarEdad(edad) {
    if (edad < 18) {
        throw new Error("La edad debe ser al menos 18 años.");
    }
    return "Edad válida";
}

try {
    console.log(validarEdad(15));
} catch (error) {
    console.error("Se produjo un error:", error.message);
}

En este caso,

  • Si se pasa una edad menor a 18, se lanzará una excepción
  • Esta se manejará en el bloque catch.

Tipos de Errores

JavaScript clasifica los errores en varias categorías, cada una con características y causas específicas. Los principales tipos de errores son:

Tipo de ErrorDescripción
ErrorError genérico, la clase base para todas las excepciones.
TypeErrorOcurre cuando una operación es realizada en un tipo inapropiado.
RangeErrorSe lanza cuando un valor está fuera del rango permitido.
ReferenceErrorOcurre al intentar acceder a una variable no definida.
SyntaxErrorSe lanza por errores de sintaxis en el código JavaScript.
URIErrorOcurre al usar funciones de codificación de URI con un URI mal formado.
EvalErrorSe lanza en situaciones de uso incorrecto de la función eval().

Ejemplos de Errores

SyntaxError

El código generará un SyntaxError debido a un paréntesis de cierre faltante.

let x = 10;
console.log(x;

ReferenceError

console.log(nonExistentVariable);

Este código lanzará un ReferenceError porque nonExistentVariable no está definida.

TypeError

Aquí, TypeError se produce porque toUpperCase no está definido para el tipo Number.

let num = 123;
num.toUpperCase(); // `toUpperCase` no es un método válido para números

RangeError

El código anterior generará un RangeError debido a un tamaño de array inválido.

let arr = new Array(-1); // No se puede crear un array con tamaño negativo

Creación de excepciones personalizadas

Además de lanzar excepciones estándar, podemos crear nuestras propias excepciones personalizadas. Esto sirve para proporcionar información más específica sobre los errores en tu aplicación.

Para crear una excepción personalizada, puedes extender la clase Error de JavaScript:

class MiExcepcion extends Error {
    constructor(mensaje) {
        super(mensaje);
        this.name = "MiExcepcion"; // Establece el nombre de la excepción
    }
}

Vamos a verlo en un ejemplo de cómo usar una excepción personalizada:

function validarNombre(nombre) {
    if (typeof nombre !== 'string' || nombre.length === 0) {
        throw new MiExcepcion("El nombre debe ser una cadena no vacía.");
    }
    return "Nombre válido";
}

try {
    console.log(validarNombre("")); // Lanzará una excepción
} catch (error) {
    console.error(`${error.name}: ${error.message}`);
}

En este caso,

  • MiExcepcion se utiliza para lanzar un error específico relacionado con la validación de un nombre