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: 42

Y cuando hay un error:

Oops: Algo salió mal

Para 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: