Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

126
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!