【发布时间】:2010-12-29 23:51:16
【问题描述】:
我正在尝试在生产性网站上记录 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;
我正在尝试向错误添加堆栈跟踪以获取更多信息。这基本上适用于以下想法,包括上述功能:
try { i.dont.exist += 0; } // does not exist - that's the point
catch (e)
{
if (e.stack) // Firefox
{
// do some stuff
我用jquery,一个简单的例子:
<script type="text/javascript">
jQuery(document).ready(function() {
p.foo += 1; // this should throw an error
// do stuff
});
</script>
有趣的是,当我在 jquery 的“就绪”函数中出现错误时,“try { i.dont.exist += 0; }”部分不再抛出任何异常并且引擎停止任何错误。 在上面的例子中,catcherr 扩展如下,只有“1”得到警告:
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)
// ...
}
当 jquery 的“就绪”函数内部发生错误时,任何人都知道为什么会中断?
【问题讨论】:
标签: javascript jquery error-handling stack-trace onerror