Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

335
Visualizações
Cada error arrojado termina en un bloque de captura, aunque tiene que arrojar un error antes de eso y detener el resto del código.
 async deleteUser(userId: string): Promise<boolean> { try { const userToDelete = await userModel.findByIdAndDelete(userId) if(!userToDelete) { throw new Error(`User with id: ${userId} does not exist`) } return true } catch { throw new Error("Something wrong with the database"); } }

Resultado buscado:

  1. Si el ID de usuario es válido pero no existe en la base de datos, arroja el primer error
  2. Si UserId no es válido o cualquier otro tipo de error arroja un segundo error

resultado actual:

  1. Si el ID de usuario es válido pero no existe en la base de datos, arroja el SEGUNDO error
  2. Si UserId no es válido o cualquier otro tipo de error arroja un segundo error
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Bueno, estás throw una excepción dentro de un bloque de try , que será capturado, y tu bloque catch vuelve a lanzar una excepción diferente. Puede inspeccionar la excepción detectada

 async deleteUser(userId: string): Promise<boolean> { try { const userToDelete = await userModel.findByIdAndDelete(userId) if (!userToDelete) { throw new Error(`User with id: ${userId} does not exist`) } return true } catch(e) { if (e.message == `User with id: ${userId} does not exist`) throw e else throw new Error("Something wrong with the database") } }

(Comprobar un e.code que puso en el error con Object.assign , o probar una subclase de Error con instanceof , sería mejor que probar el mensaje)

o ponga el try más cerca de la declaración await … cuyos errores desea manejar:

 async deleteUser(userId: string): Promise<boolean> { let userToDelete try { userToDelete = await userModel.findByIdAndDelete(userId) } catch { throw new Error("Something wrong with the database"); } if (!userToDelete) { throw new Error(`User with id: ${userId} does not exist`) } return true }

que es mejor con .catch() :

 async deleteUser(userId: string): Promise<boolean> { const userToDelete = await userModel.findByIdAndDelete(userId).catch(e => { throw new Error("Something wrong with the database"); }) if (!userToDelete) { throw new Error(`User with id: ${userId} does not exist`) } return true }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda