El manejo de errores en Node.js representa el 8% de la certificación JSNAD y se evalúa con un único ejercicio práctico: el task 5.1. Dominar el error handling en JavaScript es clave para cualquier desarrollador backend que trabaje con código síncrono y asíncrono.
La referencia oficial para este dominio es la documentación de Mozilla Developer Network sobre control de flujo y manejo de errores, que cubre desde callbacks hasta event emitters.
¿Qué evalúa el dominio de error handling en JSNAD?
Este dominio mide tu capacidad para controlar errores en distintos contextos del lenguaje. No basta con un try/catch: cada abstracción asíncrona tiene su propia técnica.
Las claves que debes dominar son:
- Control de errores con callbacks, siguiendo el patrón error first.
- Manejo de errores en promesas con
.catch().
- Captura con try/catch en funciones
async/await.
- Escucha del evento
error en event emitters.
¿Cuántos ejercicios de error handling aparecen en JSNAD? Solo uno, el task 5.1, pero pesa un 8% de la nota total. Por eso conviene practicarlo hasta automatizarlo.
¿Cómo se resuelve el task 5.1 paso a paso?
El ejercicio incluye dos archivos: answer.js y emitter.js. El segundo trae un comentario explícito que dice avoid changing this file. Any change will result in zero grade. Es decir, no lo tocas, solo lo analizas.
Al revisar emitter.js notarás que exporta un event emitter que dispara un error mediante un setTimeout después de 500 milisegundos. Tu tarea está clara: escuchar ese error desde answer.js y, cuando ocurra, salir del proceso con código de salida 1.
¿Qué hace el archivo emitter.js que no debes modificar?
Exporta una instancia de event emitter que emite un evento error de forma asíncrona. La pista importante es que el error no es inmediato: ocurre tras medio segundo, lo que confirma que necesitas un listener registrado antes de que el evento se dispare.
¿Cómo escuchar el evento error en un event emitter?
El estándar en Node.js es registrar un listener sobre el evento error. La sintaxis es directa:
javascript
const emitter = require('./emitter')
emitter.on('error', (err) => {
process.exit(1)
})
Fíjate en un detalle del enunciado: no te piden loguear el error ni imprimir nada. Solo necesitan que el proceso termine con exit code 1. Cualquier console.log extra es ruido innecesario.
¿Qué significa exit code 1 en Node.js? Es el código de salida que indica que el proceso terminó por un error. El valor 0 significa éxito; cualquier otro número señala una falla controlada.
¿Cómo verificar que el ejercicio quedó bien resuelto?
Desde la terminal, dentro de la carpeta task-5.1, ejecuta node answer.js. A simple vista no verás salida en pantalla, pero tu terminal mostrará un indicador de que el comando falló con exit code 1.
Ese indicador es justamente la confirmación de que tu código:
- Registró correctamente el listener sobre el evento
error.
- Capturó el error emitido por el setTimeout tras 500 ms.
- Cerró el proceso con el código de salida esperado.
Si no manejas el evento error en un event emitter, Node.js lanza una excepción no capturada y el proceso muere con un stack trace visible. Ese comportamiento por defecto es la razón por la que escuchar error es obligatorio en cualquier emisor que pueda fallar.
¿Qué técnicas de error handling debes repasar antes del examen?
Aunque este task se enfoca en event emitters, el examen puede mezclar conceptos en otros dominios. Vale la pena que repases:
- El patrón error first callback, donde el primer parámetro de la función siempre es el error.
- El método
.catch() encadenado en promesas para capturar rechazos.
- La combinación
try/catch con async/await para tratar promesas como código síncrono.
- La diferencia entre errores operacionales y errores de programación dentro de Node.js.
Entender cuándo aplicar cada técnica te ahorra tiempo en el examen y te da claridad cuando el enunciado describe el contexto asíncrono. Cuéntame en los comentarios qué técnica de manejo de errores se te complica más en tu día a día.