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! :)