Estoy tratando de encontrar o descubrir una manera de mostrar en un cuadro de alerta todas las excepciones de JavaScript no controladas en una aplicación. Me gustaría que todo esto se hiciera en el lado del cliente, sin usar ningún código del lado del servidor. Estoy usando MVC3 como entorno.
He estado investigando durante los últimos días y no he encontrado exactamente lo que estoy buscando.
Encontré 2 formas a continuación que parecen ser casi lo que estoy buscando, excepto que estas formas están configuradas para que tenga que pasar un nombre de función a un método personalizado para imprimir el seguimiento de la pila de todas las excepciones no controladas dentro de ese función específica. Estoy buscando una forma de no tener que pasar manualmente un nombre de función a un método personalizado que imprime el seguimiento de la pila de todas las excepciones no controladas. Me gustaría que este método personalizado simplemente 'escuche' todas las excepciones no controladas dentro de toda la aplicación.
http://eriwen.com/javascript/js-stack-trace/
También algo similar al enlace anterior:
https://github.com/eriwen/javascript-stacktrace
Aquí está el código básico del segundo enlace anterior que imprime el seguimiento de la pila de una función javascript especificada:
instrumentFunction: function (context, functionName, callback) {
context = context || window;
var original = context[functionName];
context[functionName] = function instrumented() {
callback.call(this, printStackTrace().slice(4));
return context[functionName]._instrumented.apply(this, arguments);
};
context[functionName]._instrumented = original;
}
function printStackTrace(options) {
options = options || {
guess: true
};
var ex = options.e || null,
guess = !! options.guess;
var p = new printStackTrace.implementation(),
result = p.run(ex);
return (guess) ? p.guessAnonymousFunctions(result) : result;
}
Entonces, para resumir esto, ¿todos conocen alguna forma de tener algún tipo de 'oyente' para escuchar todas las excepciones no controladas de JavaScript y luego imprimirlas en la pantalla en un cuadro de alerta?
¡Gracias! Jason
fuente
Respuestas:
Puede hacer esto usando el método window.onerror.
fuente
Puede usar
window.onerror
, o (¡asombrosamente!) Enlazarse al evento 'error' correctamente:Si desea realizar un seguimiento de los errores de JavaScript, puede probar Atatus . Trabajo en Atatus.
fuente
Además de
También puede detectar todos los errores disparados dentro de una promesa de devolución de llamada (
.then()
) escuchando elunhandledrejection
eventofuente
window.onerror
ywindow.addEventListener("error"
, o basta con utilizar uno de ellos?window.addEventListener("error"
, envíe eluseCapture
conjunto atrue
para detectar también los errores de elementos que no aparecieron. developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/…error
evento no captó mi error particular.unhandledrejection
aunque lo tengo.throw new Error('tja');
no está atrapado en el último cromo con este enfoque ...Consulte http://log4javascript.org , está basado en Log4J. Si la mayor parte de su código está envuelto en declaraciones try / catch para manejar excepciones, puede hacer uso de esta biblioteca como una interfaz común para enviar resultados a un "cuadro de diálogo" o ventana de registro siempre disponible que su usuario final pueda ver. Incluso podría tener un botón que realiza un window.print () para imprimir el contenido del cuadro de diálogo en la impresora o PDF. Buena suerte.
fuente