Los errores no siempre son malos, muchas veces le indican al usuario que sucede con el sistema ante la petición que está haciendo, vamos a ver cómo se manejan estos en node para indicar que está sucediendo en nuestro programa.

 

Tipos de errores

Antes de saber cómo se manejan, necesitamos saber los tipos de errores que existen para reconocerlos en nuestro código.
Los podemos dividir en tres tipos:
Errores técnicos o de red, por ejemplo, la base de datos esta caída si esto sucede no podemos hacer mucho desde el código, más que mostrarle una página de error al usuario.
Errores esperados, por ejemplo, aquellos datos que podrían ingresarse incorrectamente, en este caso podríamos informarle al usuario que es lo que está ingresando mal.
Errores lógicos, por ejemplo, cualquier comportamiento de nuestro programa no deseado, este es un error en el código y debe desarrollarse una solución.

 

¿Como vamos a manejar los errores?

Lo primero que tenemos que tener en cuenta es el comportamiento que queremos que tenga nuestra aplicación, tenemos que decidir si en cierto comportamiento se va a lanzar un error o no.
En el caso de que si se lance, lo vamos a manejar con un bloque try-catch (en los casos sincrónicos) o con un then()-catch() (para los casos asincrónicos).
En el caso de que no se lance ningun error, manejaremos directamente el error sin pasar por estos bloques (en el caso de las validaciones de los datos es cuando usaremos más esta forma).
Una vez que decidimos cómo los manejamos hay que elegir, qué le vamos a comunicar al usuario, podría ser una página de error, la misma página en la que estaba pero informando del error, redirigirlo a otra página, etc. Tenemos que ver lo que se adecue más a nuestra aplicación.

 

Manejando los errores en node

En node vamos a poder usar los bloques try-catch para manejar los errores que sucedan en nuestra app, no es para nada diferente a cualquier otro lenguaje.
En la siguiente imagen vemos como se aplica:

Esto nos sirve para cualquier código sincrónico para los asincrónicos debemos usar el then()-catch() como en el siguiente ejemplo:

De esta forma podremos manejar nuestros errores, pero como ya vimos en node podemos usar express que nos va a permitir manejar los errores de una manera centralizada. Veamos cómo hacerlo:

Como vemos cuando hacemos “next(error)” express busca los middleware que manejen errores, estos son los que manejan cuatro argumentos (error, request, response, next).
Una cosa a tener en cuenta es que si tenemos varios middleware estos se van a ejecutar del que está más arriba al que está más abajo (como ya sucedía con los middleware).
Dentro de este middleware de error vamos a poder manejar los errores como deseemos, podemos devolver una página cuando el status code es 500 o como sea conveniente para nuestra app.
Una cosa importante a tener en cuenta en que si queremos hacer lanzar errores con “throw new Error()” debemos saber donde lo vamos a utilizar, express va a detectar esto en su middleware de errores siempre y cuando eso haya sido ejecutado en código sincrónico, si se ejecuta en código asincrónico no lo tendrá en cuenta, para que maneje esto último deberemos hacer “next(new Error)”.

Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!