Yo sé que soy 4 años tarde a la fiesta aquí , pero todavía sentía el impulso de agregar mis 2 centavos.
Como señala Eldar, puede usar e.message para obtener el mensaje de la excepción. Sin embargo, en Chrome, Firefox e IE10 +, también puedes obtener el seguimiento de la pila usando e.stack. El seguimiento de pila incluirá el archivo y el número de línea de la excepción.
Así que para montar una cadena con información excepción, podría escribir algo como esto:
var exmsg = "";
if (e.message) {
exmsg += e.message;
}
if (e.stack) {
exmsg += ' | stack: ' + e.stack;
}
Tenga en cuenta que sólo obtendrá un seguimiento de pila si
- la excepción fue lanzada por el navegador (como en respuesta a un error de sintaxis );
- el objeto de excepción es un objeto Error o tiene el objeto Error como su prototipo.
Así que tan solo tirar una cuerda (arrojar 'Excepción !!') no le dará un rastro de pila.
Para llevar esto un poco más lejos, para detectar todas las excepciones no detectadas, usaría un controlador window.onerror (similar al controlador .NET Application_Error en global.asax).El inconveniente de esto solía ser (y aún lo es) que esto no le daría acceso al objeto de excepción real, por lo que no podría obtener el seguimiento de la pila. Solo obtendrías el mensaje, la url y el número de línea.
Recientemente, la norma ha sido extendida para darle la columna (ideal para archivos minified) y el objeto de excepción, así: http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#errorevent
En este momento (abril de 2014), sólo Chrome 32 implementos, todo esto. IE10 + le proporciona la columna pero no el objeto de excepción. Firefox 28 solo le proporciona mensajes, url y número de línea. Con suerte, esto mejorará pronto. He escrito sobre esto para el proyecto JSNLog, en: http://jsnlog.com/Documentation/GetStartedLogging/ExceptionLogging
(exención de responsabilidad: yo soy el autor de JSNLog y jsnlog.com)
En segundo lugar, el objeto de excepción .NET admite excepciones internas. También tiene una propiedad de Datos para que pueda adjuntar pares de valores clave con, por ejemplo, valores de variables. Lo perdí en el objeto JavaScript Error, así que creé mi propio objeto Exception, también como parte del proyecto JSNLog. Está en el archivo jsnlog.js en el proyecto jithnlog.js Github (https://github.com/mperdeck/jsnlog.js).
Descripción está en: http://jsnlog.com/Documentation/JSNLogJs/Exception
Por último, un enchufe descarado - el proyecto JSNLog Estoy trabajando en le permite insertar madereros en su JavaScript, e inserta automáticamente los mensajes de registro en el registro del lado del servidor existente. Así que para conectarse con sus excepciones JavaScript trazas de la pila a su registro del lado del servidor, sólo es necesario escribir:
try {
...
} catch (e) {
JL().fatalException("something went wrong!", e);
}
Esto no funciona en el servidor. Además, no es UX moderno. –