JavaScript:
Manejo de errores
Cómo hacerlo:
Aquí está el clásico bloque try-catch:
try {
// Código que podría lanzar un error
let result = operacionPotencialmenteRiesgosa();
console.log('Éxito:', result);
} catch (error) {
// Qué hacer si se lanza un error
console.error('Oops:', error.message);
}Salida de muestra cuando no ocurre error:
Éxito: 42Y cuando hay un error:
Oops: Algo salió malPara código asíncrono, donde se involucran promesas, utiliza try-catch en una función async:
async function fetchData() {
try {
let data = await fetch('https://api.ejemplo.com/data');
console.log('Datos obtenidos:', data);
} catch (error) {
console.error('Error al obtener datos:', error.message);
}
}
fetchData();Inmersión Profunda
El manejo de errores en JavaScript ha evolucionado. En los viejos tiempos (ES3, circa 1999), solo teníamos el bloque try-catch. No era súper flexible, pero hacía el trabajo.
ES6 (2015) introdujo Promesas y nos dio .then() y .catch(), permitiéndonos manejar errores asíncronos de una manera más elegante.
fetch('https://api.ejemplo.com/data')
.then(data => console.log('Datos obtenidos:', data))
.catch(error => console.error('Error al obtener datos:', error.message));En cuanto a los detalles de implementación, cuando se lanza un error, los motores de JavaScript crean un objeto Error con propiedades útiles como message y stack. También puedes hacer tipos de errores personalizados extendiendo la clase Error – útil para aplicaciones más complejas.
¿Alternativas? Podrías ignorar el manejo de errores (mala idea), usar callbacks con parámetros que primero indican el error (hola, estilo Node.js), o ponerte más sofisticado con bibliotecas y frameworks que ofrecen sus propias soluciones.
Ver También
Para más sobre manejo de errores:
- MDN sobre try-catch: MDN try…catch
- Async/Await: MDN función async
- Una guía para Promises: MDN Promises
- Crear y lanzar errores personalizados: MDN Error