Estoy intentando registrar errores de JavaScript en un sitio productivo. Hasta ahora ha funcionado bastante bien con el siguiente código incluido en el sitio:errores de registro con seguimiento de pila en javascript
function catcherr(errorMessage, url, line) {
var parameters = "msg=" + escape(errorMessage)
+ "&url=" + escape(url)
+ "&line=" + escape(line);
new Image().src = "/error.gif?" + parameters;
return false;
};
window.onerror = catcherr;
Estoy intentando añadir un seguimiento de la pila de los errores para obtener más información. Esto, básicamente, funciona con la siguiente idea incluida en la función anterior:
try { i.dont.exist += 0; } // does not exist - that's the point
catch (e)
{
if (e.stack) // Firefox
{
// do some stuff
utilizo jQuery, un ejemplo sencillo:
<script type="text/javascript">
jQuery(document).ready(function() {
p.foo += 1; // this should throw an error
// do stuff
});
</script>
La parte divertida es, que cuando tenga un error dentro de la "lista "función de jquery, la parte" try {i.dont.exist + = 0;} "ya no arroja ninguna excepción y el motor se detiene sin ningún error. Con el ejemplo anterior, y catcherr amplía del modo siguiente, sólo "1" consigue alertado:
function catcherr(errorMessage, url, line) {
try { alert(1); i.dont.exist += 0; alert(4);} catch(e) { alert(5);}
alert(2);
var parameters = "msg=" + escape(errorMessage)
// ...
}
Cualquier persona que tenga una idea de por qué esto se rompe, cuando se produce un error dentro de la función "listo" de jQuery?
No lo creo, ya que el error se produce si elimino el try {} en la función catcherr(). – 2ni