Las promesas en JavaScript son un objeto general de este lenguaje de programación que nos permiten preparar distintas acciones para ser ejecutadas en diferentes escenarios. Además, este objeto nos permite crear un escenario en el que se ejecuta un error, es decir, que la promesa sea rechazada.
Sin embargo, para que nuestro proyecto funcione, no podemos dejar un error sin tratar. Por ello, en este post, te enseñaremos qué es y cómo funciona el control de flujo try catch en JavaScript para tratar los errores de una promesa.
¿Qué es el control de flujo try catch en JavaScript?
Como has podido leer en nuestro post sobre crear una promesa en JavaScript con Math.random, en este lenguaje de programación podemos hacer que, según un valor aleatorio, una promesa se resuelve o se rechace. Además, al jugar con el valor de cada condición, podemos hacer que haya más o menos probabilidad de que una promesa se resuelva.
En las siguientes líneas de código, definimos que una promesa se resuelve siempre que haya un valor mayor que 0.1:
let promise = new Promise ((resolve, reject) => {
if (Math.random () > 0.1) {
resolve (‘mayor que 0.1’)
} else {
reject (‘menor de 0.1’)
})
console.log (promise)
Ya que la escala del método Math.random va de 0.0 a 0.9, hay más probabilidad de que la promesa se resuelva que de que falle. Sin embargo, todavía puede fallar, y debemos estar preparados para cuando lo haga. Para ello, se utiliza el control de flujo try catch en JavaScript.
El control de fuljo try catch en JavaScript es una construcción que nos permite manejar el fallo de una promesa. Esta construcción se escribe de la siguiente manera:
try {
} catch (error) {
}
Como puedes ver en las anteriores líneas de código, la palabra clave catch necesita un parámetro: el error. Por su parte, la palabra clave try no requiere de ningún parámetro. Este control de flujo es equivalente al condicional if…else. Esto es porque, dentro de las llaves del try, definiremos qué sucede en el caso de que todo vaya bien (if).
Luego, en el código del catch, tendremos lo que debe suceder cuando el código del try pueda dar un error. Esta sección cumple un objetivo similar a la palabra clave else.
Entonces, para ejemplificar este control de flujo, llenemos sus líneas de código. En este caso, usaremos las propiedades de la promesa promise que hemos creado antes usando el método Math.random.
Normalmente usamos los símbolos ${variable} para llamar a las variables o propiedades de un objeto en el contexto de un string dentro del comando console.log. Sin embargo, usarlos aquí nos devuelve simplemente object promise. Por ello, utilizamos otra sintaxis:
try {
console.log (‘La promise funciona’ , promise)
} catch (error){
console.log (‘La promise no funciona’ , error)
}
Con este control de flujo veremos que cuando la promesa funciona (es decir, que pasa por resolve), obtenemos el string mayor que 0.1. Sin embargo, en los casos en los que no sirve, obtenemos un error.
Otra forma de capturar errores y controlar qué sucede cuando aparecen en una promesa es utilizar los métodos then y catch de JavaScript. Entonces, podemos escribir el mismo resultado del control de flujo try catch con estos métodos. A continuación, te mostramos las líneas de código que nos llevan a ello:
promise.then (response => {
console.log (‘La promise funciona’ , promise)
}).catch (error => {
console.log (‘La promise no funciona’ , error)
})
En este caso, hemos decidido usar la forma de escritura en la que concatenamos los métodos then y catch. Es decir, el método .catch está recibiendo el resultado del método .then y se basa en él para ejecutar su acción. Esta forma de escritura muchas veces es más eficiente que el control de flujo try catch e, incluso, que la otra forma de escritura de los métodos, pues no solo captura el error, sino que lo resuelve de forma inmediata.
Ahora que sabes cómo capturar un error utilizando el control de flujo try catch en JavaScript y otros métodos, ¡seguro que quieres seguir aprendiendo sobre las posibilidades de este lenguaje de programación! Para ello, te recomendamos echarle un vistazo a nuestro Desarrollo Web Full Stack Bootcamp, una formación íntegra e intensiva en la que aprenderás todo lo necesario para dominar JavaScript y otros lenguajes de programación para la web, como son CSS y HTML. ¿Te animas a seguir aprendiendo con nosotros? ¡Te esperamos!