• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

228
Vistas
¿Está bien mezclar .catch() con async/await para el manejo de errores?

Normalmente, cuando se trata del manejo de errores para async / awai t en JavaScript, la gente usa por defecto try / catch . Pero me pregunto si puedo usar .catch() en su lugar, como en

 const res = await fetch().catch((error) => ( // error handling )); const json = await res.json();

Me pregunto si esto funciona igual que un bloque try / catch

 try { const res = await fetch() const json = await res.json(); } catch(e) { // error handling }

Entiendo que, técnicamente, el bloque try / catch puede detectar errores generados por res.json(); también, así que supongo que todavía es preferible al ejemplo .catch() .

over 2 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Me pregunto si esto funciona igual que el bloque try / catch

No, como ya te has respondido a ti mismo. En particular, el bloque de try alrededor res.json() también detectaría errores arrojados por eso, que puede o no desear .

Además, si no está volviendo a throw una excepción desde su devolución de llamada .catch() , su valor de retorno se convertirá en el valor res y se seguirá llamando a res.json() , por lo que es mejor que return una instancia de Response válida.

¿Está bien mezclar .catch() con async / await para el manejo de errores?

¡Si, absolutamente! Es una herramienta mucho más versátil si desea manejar errores de una promesa específica solamente. Hacer eso con try / catch es mucho más feo , por lo que incluso recomendaría usar .catch() para volver a generar errores (cuando desea un mejor mensaje de error):

 const res = await fetch(…).catch(error => { throw new Error('Could not reach backend', {cause: error}); }); if (!res.ok) throw new Error(`Backend responded with ${res.status} error: ${await res.text()}`); const data = await res.json();

Si no desea volver a throw , le recomiendo usar .then() para manejar las rutas de éxito y falla por separado :

 const data = await fetch(…).then(res => { if (!res.ok) { console.error(`Backend responded with ${res.status} error`); return null; } return res.json(); }, error => { console.error('Could not reach backend', error); return null; });
over 2 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda