1
respuesta

[Duda] DUDA EN LA REFACTORIZACIÓN

Por qué en el código refactorizado no se está generando un nuevo objeto de error para que el catch se ejecute, o es que el await internamente ya genera el objeto de error cuando este se da ?

Me refiero a este objeto que permite generar un error.

throw new Error();

Gracias por su respuesta

1 respuesta

Hola Miguel,

Entiendo tu duda sobre la refactorización del código y la generación de errores. En el código refactorizado, no se está generando explícitamente un nuevo objeto de error con throw new Error();, pero eso no significa que no se estén manejando los errores.

Cuando usas await, estás diciendo básicamente: "espera a que esta promesa se resuelva y luego continúa con el código". Si la promesa se resuelve correctamente, el código continúa normalmente. Pero si la promesa es rechazada (es decir, si ocurre un error), await automáticamente lanza un error que puedes capturar con catch.

Entonces, en tu código refactorizado:

const render = async () =>  {
    try {
        const listaClientes = await clienteService.listaClientes()
        listaClientes.forEach(elemento => {
            tabla.appendChild(creaNuevaLinea(elemento.nombre,elemento.correo, elemento.id))
        })
    }
    catch(error){
        console.log(error)
        window.location.href="../telas/error.html"
    }
}

Si clienteService.listaClientes() se resuelve correctamente, el código dentro del try se ejecutará sin problemas. Pero si clienteService.listaClientes() es rechazada (es decir, si ocurre un error), await lanzará ese error y el código dentro del catch se ejecutará, manejando así el error.

Espero que esto aclare tu duda. La refactorización del código no significa que no estemos manejando los errores, simplemente estamos confiando en que await los maneje por nosotros.

Espero haber ayudado y buenos estudios!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios! :)