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);
}
}