我有兴趣监视 javascript 错误并使用调用堆栈记录错误。
我对将所有内容都包装在 try-catch 块中不感兴趣。
根据这篇文章http://blog.errorception.com/2011/12/call-stacks-in-ie.html 可以在 window.onerror 内部“递归调用堆栈中的每个函数的 .caller 以了解前面的函数堆栈“
我试图获取调用堆栈:
window.onerror = function(errorMsg, url, lineNumber)
{
var stk = [], clr = arguments.callee.caller;
while(clr)
{
stk.push("" + clr);
clr = clr.caller;
}
// Logging stk
send_callstack_to_log(stk);
}
但即使调用堆栈更长,也只有一步是可能的:
(function()
{
function inside() {it.will.be.exception;};
function middle() {inside()};
function outside() {middle()}
outside();
})();
一步并不有趣,因为 onerror 参数给了我更多关于它的信息。
是的,我根据我上面提到的文章用 IE 尝试过。
备注:我也尝试在“ERRORCAEPTION”上开设一个帐户以收集错误日志。我用 IE 对其进行了测试,“ERRORCAEPTION”识别出错误来自 IE,但我在日志中找不到任何调用堆栈信息。