我有兴趣监控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);
}
但即使callstack更长,也只有一步是可能的:
(function()
{
function inside() {it.will.be.exception;};
function middle() {inside()};
function outside() {middle()}
outside();
})();
一步并不有趣,因为错误的论据会给我更多关于它的信息。
是的,我根据上面提到的文章尝试了IE。
备注:我还试图在“ERRORCAEPTION”上开设一个帐户来收集错误日志。我用IE测试它并且“ERRORCAEPTION”认识到错误来自IE,但是我在日志中找不到任何callstack信息。
答案 0 :(得分:2)
不幸的是,这个日志并不总是可用,它缺少行号,你不能真正依赖它。
Qbaka会自动超载一堆JavaScript函数,例如addEventListener
,setTimeout
,XMLHtppRequest
等,以便回调中发生的错误自动用try-catch包装并且您将获得没有任何代码修改的堆栈跟踪。
答案 1 :(得分:1)
看看这里: https://github.com/eriwen/javascript-stacktrace
这是我在Muscula上使用的那个,一个类似错误的服务,除了它是免费的。
答案 2 :(得分:1)
您可以尝试 atatus ,它提供了javascript上下文错误跟踪:https://www.atatus.com/
答案 3 :(得分:0)
我写了一个程序来监视js错误。也许会有所帮助。
我使用三种方法来捕获异常,例如window.onerror,重写console.error和window.onunhandledrejection。这样我会收到未捕获的错误,未处理的承诺拒绝和自定义错误
在这里看看:https://github.com/a597873885/webfunny_monitor
或此处:https://www.webfunny.cn
有帮助