Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

124
Vistas
Manejo del estado 500 con prueba y captura

No puedo decir cuál es la forma óptima de manejar el estado 500 enviado por mi API. ¿Me podría ayudar? En el caso a continuación, cuando mi API responde con un estado 500, deseo configurar un mensaje de error en mi tienda redux. Cuando mi API envió un código de estado exitoso, deseo "Buscar los mazos de usuario" en mi tienda.

Mi primer intento me pareció lógico y seco, pero no funcionó:

 const createDeck = async () => { try { const request = await fetch(`${back}/deck/`, options) const response = await request.json() store.dispatch({ type: FETCH_USER_DECKS }) } catch (error) { store.dispatch({ type: SET_ERROR, message: error }) } }

Cuando la API envía un estado 500, no parece que se produzca ninguna excepción y se ignora el código en mi bloque catch.

Mi segundo y tercer intento funcionaron, ya que también los excluí, pero se sienten complicados y extraños:

2do intento:

 const createDeck = async () => { try { const request = await fetch(`${back}/deck/`, options) const response = await request.json() if (request.status === 201 || request.status === 200) { store.dispatch({ type: FETCH_USER_DECKS }) } else { store.dispatch({ type: SET_ERROR, message: error }) } } catch (error) { console.log('error') } }

Esto funciona, pero ignora por completo el bloque catch, lo que me hace preguntarme: ¿cuál es el punto de intentar... atrapar entonces?

Tercer intento:

 const createDeck = async () => { try { const request = await fetch(`${back}/deck/`, options) const response = await request.json() if (request.status === 201 || request.status === 200) { store.dispatch({ type: FETCH_USER_DECKS }) } else { throw response } } catch (error) { store.dispatch({ type: SET_ERROR, message: error }) } }

Este tercer intento hace uso de catch, pero se siente extraño lanzar manualmente una excepción, para ser atrapado inmediatamente por catch.

¿Me estoy perdiendo de algo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Isbn ha respondido adecuadamente a esto en los comentarios. Lo pongo aquí nuevamente para mayor visibilidad: "Dado que está usando fetch (), probablemente tendría sentido adoptar su modelo de implementación y no considerar una respuesta 500 como una excepción (intento 2). Pero no vería algo malo con su tercer intento tampoco (axios, por ejemplo, generaría un error en ese caso). Tenga en cuenta que la respuesta fetch () expone una propiedad ok para verificar si la solicitud tuvo éxito o no "

about 4 years ago · Juan Pablo Isaza 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda