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

323
Visualizações
¿Cómo manejo los errores en una función llamada desde un controlador de ruta en Express, NodeJS?

Esto puede ser extremadamente estúpido, pero no he encontrado mucho al respecto porque no entiendo cómo debo buscar esto.

Tengo un controlador de ruta que puede llamar a diferentes funciones según algunos parámetros de solicitud, y me gustaría saber cuál es la mejor manera de tratar los errores dentro de las funciones para pasar errores al middleware de manejo de errores. Considere algo como esto:

 router.get('/error/:error_id', (req, res, next) => { my_function(); } function my_function(){ // do something async, like readfile var f = fs.readFile("blablabla", function (err, data) { // would want to deal with the error }); }

Si ocurre un error durante fs.readFile , ¿cómo paso el error a next para reenviarlo al middleware de error? La única solución es pasar el siguiente parámetro a la función function my_function(next){...} ?

En caso de que la función no llamara a ninguna operación de E/S asíncrona, un simple try/catch en el controlador de ruta estaría bien (supongo), así:

 router.get('/error/:error_id', (req, res, next) => { try{ my_function(); } catch(e){ next(e); }; } function my_function(){ // do stuff var f = fs.readFileSync("blablabla"); // possibly throws an error }

Espero tener algo de sentido.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Tiene toda la razón en que debe pasar la next devolución de llamada a my_function ya que fs.readFile es asíncrono.

 router.get('/error/:error_id', (req, res, next) => { my_function(next); } function my_function(next) { fs.readFile("blablabla", function (err, data) { if (err) { next(err); } else { // Process the data // Don't forget to call `next` to send respond the client } }); }

Por cierto, no puedes hacer

 var f = fs.readFile(...)

porque fs.readFile es asíncrono. Los datos deben manejarse dentro de la devolución de llamada.

over 4 years ago · Santiago Trujillo 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