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

131
Visualizações
Agregar nueva información y volver a generar errores en funciones anidadas

Estoy tratando de implementar un manejo de errores que cuando una función genera un error, la función de llamada debe detectar ese error y agregarle información, para que el problema sea más fácil de entender. En el siguiente ejemplo, trato de explicar mis dudas. La first y la second función son llamadas por la third , y cada una de ellas genera errores diferentes, con información diferente. Me gustaría que la third función pueda detectar estos errores y adjuntarles información (la forma en que se implementa actualmente el ejemplo pierdo la información que first y second adjuntaron al error).

 class FirstError extends Error { constructor(msg, num) { super(msg); this.num = num; } } class SecondError extends Error { constructor(msg, str) { super(msg); this.str = str; } } class ThirdError extends Error { constructor(msg, arg) { super(msg); this.arg = arg; } } function first(num) { throw new FirstError('First error', num); } function second(num) { throw new SecondError('Second error', num.toString()); } function third(fn) { try { fn(25); } catch (error) { throw new ThirdError('Third error', fn); } } try { third(first); third(second); } catch (error) { console.log(error); console.log(error instanceof Error); console.log(error instanceof FirstError); console.log(error instanceof SecondError); console.log(error instanceof ThirdError); console.log(error.message); console.log(error.stack); }

También entiendo que podría probar las instancias del error recibido en el third , como el ejemplo a continuación. Sin embargo, como tendré varias funciones que devuelven errores, este enfoque no sería interesante ya que me quedaría con demasiadas pruebas y tendría que actualizar la tercera función con cada nuevo tipo de error agregado.

 function third(fn) { try { fn(25); } catch (error) { if (error instanceof FirstError) { throw new ThirdError('Third error', fn); } else if (error instanceof SecondError) { throw new ThirdError('Third error', fn); } } }

¿Alguna idea de cómo resolver este problema?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Puede pasar el error original al ThirdError. Entonces puedes acceder a ese error, por ejemplo

 ... class ThirdError extends Error { constructor(msg, ...args) { super(msg); this.arg = args[0]; this.innerError = args.slice(1); } } ... function third(fn) { try { fn(25); } catch (error) { throw new ThirdError('Third error', fn, error); } }

Producción:

 ThirdError: Third error ..., innerError: [ FirstError: First error ... { num: 25 } ] } ...
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