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

143
Views
¿Cómo lanzar excepciones "expresivas" / amigables con la consola en JavaScript?

Noob de JavaScript aquí... Estoy explorando varias opciones para lanzar excepciones.

Lanzar una cadena/valor primitivo

Esto parece ser una mala práctica por varias razones (captura, stacktrace, ...)

Error uso

 throw new Error("bad times")

Este parece ser un enfoque común, pero no soy un gran admirador porque no puedo agregar información adicional fácilmente. no puedo por ejemplo hacer

 throw new Error("bad times", { reason: strangeObject })

Podría JSON.stringify la información adicional, pero me gusta cuando puedo expandir/contraer el objeto en la consola.

Por lo que puedo decir, no avanzaré más con excepciones personalizadas/subclases de error.

Lanzar { msg: "bad times", reason: strangeObject }

Esto me permite expandir/contraer strangeObject muy bien en la consola. Para que las excepciones a lo largo de mi aplicación sean consistentes, necesitaría repetir la parte msg: en todas partes, de lo cual no soy fanático.

Terminé optando por el último enfoque, solo para descubrir que ESLinter se queja de este enfoque:

Se esperaba que se lanzara un objeto de error no-throw-literal

Entonces, mi pregunta es básicamente : ¿Puedo usar Error (o subclases de Error personalizadas) de una manera amigable para la consola, es decir, admitir expandir/colapsar?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Me he conformado con una excepción personalizada y un controlador window.onerror :

 class MyAppError extends Error { constructor(msg, details) { super(msg) this.details = details } } window.onerror = function(message, source, lineno, colno, error) { if (error instanceof MyAppError) { console.error(message, error.details) return true } return false } function throwSomething() { throw new MyAppError("I made a mess", { someDetail: "a value", otherStuff: "another value" }); } console.log("Hello World"); throwSomething();

( JSFiddle )

El resultado se ve así en Firefox y Chrome, con lo que estoy bastante contento.

ingrese la descripción de la imagen aquí

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!