como-usar-try-catch-en-javascript

Try Catch en JavaScript

El bloque try...catch se utiliza para capturar excepciones que pueden ocurrir durante la ejecución de código en JavaScript.

Nos permite gestionar errores que ocurren durante la ejecución, sin interrumpir el flujo general del programa (gestionándolo de forma controlada).

La sintaxis básica de try...catch es la siguiente:

try {
    // Código que puede generar un error
} catch (error) {
    // Código que se ejecuta si ocurre un error
} finally {
    // Código que se ejecuta siempre, independientemente de si ocurrió un error o no
}
  • try: Contiene el bloque de código que se desea ejecutar y que podría lanzar una excepción.
  • catch: Captura la excepción lanzada en el bloque try y permite manejar el error.
  • finally (opcional): Contiene código que se ejecuta siempre, ya sea que ocurriera un error o no.

Cómo usar try…catch

Veamos un ejemplo simple para entender cómo funciona try...catch:

try {
  let undefinedVar; // No se inicializa

// Esto lanzará un TypeError
  console.log(undefinedVar.toString()); 
} catch (error) {
  console.log("Error capturado:", error.message);
}

// mostraría
// Error capturado: Cannot read properties of undefined (reading 'toString')

En este ejemplo, el TypeError se captura y maneja en el bloque catch.

Manejando errores

A continuación, un ejemplo donde se lanza un error intencionalmente:

function obtenerElemento(arr, index) {
    try {
        if (index < 0 || index >= arr.length) {
            throw new Error("Índice fuera de límites");
        }
        return arr[index];
    } catch (error) {
        console.error("Error:", error.message);
    }
}

const numeros = [1, 2, 3];
console.log(obtenerElemento(numeros, 5)); // Error: Índice fuera de límites

En este caso, se lanza un error si se intenta acceder a un índice que no existe en el array. El bloque catch captura el error y muestra un mensaje en la consola.

Usando finally

El bloque finally es opcional y se utiliza para ejecutar código que siempre debe ejecutarse (independientemente de si ocurre un error o no).

try {
	let undefinedVar; // No se inicializa

	// Esto lanzará un TypeError
	console.log(undefinedVar.toString()); 
} catch (error) {
	console.log("Error capturado:", error.message);
} finally {
	console.log("Esto se va a imprimir sí o sí");
}

// mostraría:
// Error capturado: Cannot read properties of undefined (reading 'toString')
// Esto se va a imprimir sí o sí

En este caso, independientemente de si ocurre un error, el mensaje “Esto se va a imprimir sí o sí” se mostrará siempre.

Manejo específico de errores

A veces es conveniente distinguir el tipo de errores que hemos capturado. Para ello podemos usar instanceof dentro del bloque catch.

try {
  // Código que puede fallar
} catch (error) {
  if (error instanceof TypeError) {
    console.log("Tipo de error:", error.message);
  } else {
    console.log("Otro tipo de error:", error.message);
  }
}