我有兴趣监视javascript错误并使用callstack记录错误.
我不想将所有东西都包装在try-catch块中.
根据这篇文章,http://blog.errorception.com/2011/12/call-stacks-in-ie.html 可以在window.onerror内部" 递归调用.caller来查找堆栈中的每个函数,以了解之前的函数堆栈 "
我试图获得callstack:
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);
}
Run Code Online (Sandbox Code Playgroud)
但即使callstack更长,也只有一步是可能的:
(function()
{
function inside() {it.will.be.exception;};
function middle() {inside()};
function outside() {middle()}
outside();
})();
Run Code Online (Sandbox Code Playgroud)
一步并不有趣,因为onerror参数给了我更多关于它的信息.
是的,我根据上面提到的文章用IE尝试过.
备注:我还尝试在"ERRORCAEPTION"上开设一个帐户来收集错误日志.我用IE测试它并且"ERRORCAEPTION"认识到错误来自IE,但我在日志中找不到任何callstack信息.