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

153
Vistas
Nuevo mensaje de error personalizado en JavaScript

Creé mi propio error al extender la clase Error :

 class MyError extends Error { constructor(message) { super(message); this.name = this.constructor.name; } }

Entonces el siguiente código:

 throw new MyError('My Message');

producirá la siguiente salida:

 throw new MyError('My Message') ^ MyError: My Message <-- OUR MESSAGE at Object.<anonymous> (D:\GitHub\error-meta\main.js:1:7) at Module._compile (node:internal/modules/cjs/loader:1101:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47

Podemos ver que My message se imprime entre la línea de código y el seguimiento de la pila.

¿Cómo debo extender la clase de Error para imprimir My message u otro texto antes de la salida de error estándar? Entonces se vería así:

 My custom error context data! /* ... standart error output goes here ... */

Si esto no es posible, ¿cómo reemplazar completamente el mensaje de error estándar? ¿De dónde viene?

Nota importante: ¡Quiero que esto se muestre en un throw no controlado, sin imprimir datos en el bloque de catch !

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

0

¿Cómo debo extender la clase de Error para imprimir "Mi mensaje" u otro texto antes de la salida de error estándar?

Es posible que pueda hacer esto sobrescribiendo la propiedad de la stack :

 class MyError extends Error { name = this.constructor.name; stack = 'My custom error context data!\n' + this.stack; }

Sin embargo, no recomendaría hacer esto: .stack no es realmente estándar ( todavía ), puede o no ser utilizado por lo que realmente muestra el error , y no debe meterse con el captador mágico perezoso incorporado.

Si esto no es posible, ¿cómo reemplazar completamente el mensaje de error estándar? ¿De dónde viene?

Proviene de la propagación de errores de nodejs , que solo registra las excepciones no detectadas antes de finalizar el proceso. Puede anular este comportamiento predeterminado agregando un controlador de eventos uncaughtException en el process .

Sin embargo, en el caso de una aplicación CLI, simplemente no debe dejar la excepción sin manejar. Atrápelo con try / catch alrededor de su función principal, luego haga cualquier informe de error personalizado que le gustaría hacer y llame a process.exit .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Eche un vistazo al atributo de pila de la clase Error

 class MyError extends Error{ constructor(message){ super(''); this.name = this.constructor.name; this.stack= message +" : "+ this.stack //also you can replace this with anything you want } } throw new MyError("This is my message");

Entonces obtendrás algo como

 This is my message : MyError at Object.<anonymous> (/home/runner/GummyAdmirableEvents/index.js:10:7) at Module._compile (node:internal/modules/cjs/loader:1101:14)
about 4 years ago · Juan Pablo Isaza Denunciar

0

No estoy seguro de si esto es lo que está buscando, pero puede consolar su propio error antes del estándar como este:

 class MyError extends Error { constructor(message) { console.error(message) super(message); this.name = this.constructor.name; } }
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