Has oído hablar de la "excepción no atrapada"?
El evento "uncaughtException" se emite cuando una excepción JavaScript no capturada vuelve al ciclo de eventos de node.js.
process.on('uncaughtException', (error) => {
console.log('Oh my god, something terrible happend: ', error);
process.exit(1); // salir de la aplicación
})
Entonces debemos apagar nuestra aplicación después de atrapar el error porque, no es seguro reanudar el funcionamiento normal después de "uncaughtException" ya que el sistema se podria corromper.
Pero espera! Hay más
Ademas, el evento "unhandledRejection", que se emite cuando una Promesa es rechazada y no hay ningún .catch de errores adjuntado a la misma dentro del bucle de eventos de node.js.
Cuando se programa con Promesas, las excepciones se encapsulan como "promesas rechazadas".
Los rechazos pueden ser capturados y manejados usando promise.catch()
y se propagan a través de una cadena de Promesa.
El evento "unhandledRejection" es útil para detectar y llevar un registro de las promesas que fueron rechazadas y cuyos rechazos aún no han sido manejados.
process.on('unhandledRejection', (error, promise) => {
console.log(' Oh Lord! We forgot to handle a promise rejection here: ', promise);
console.log(' The error was: ', error );
});
Sugiero que añadas este manejador al comenzar el punto de entrada de tu aplicación.
A programar!!