获取自定义异常的 JavaScript 堆栈跟踪
运行 JavaScript 代码时,异常可以为您的脚本遇到的问题提供有价值的见解。然而,获取自己抛出的异常的堆栈跟踪是一个挑战。本文解决了这个问题,并提供了专门针对您自己的异常获取堆栈跟踪的解决方案。
最初,只能获取内置 JavaScript 异常的堆栈跟踪。然而,现代浏览器的进步引入了新技术来解决此限制。
现代浏览器的Console.trace()
在最近的浏览器中,console.trace( )方法可用。通过调用它,您可以获得包含 console.trace() 调用位置的堆栈跟踪。
console.trace();
Error Stack Property对于所有浏览器
评论者在原始问题上分享的一个改进的解决方案涉及利用 Error 对象的 stack 属性。
function stackTrace() {
var err = new Error();
return err.stack;
}
此方法提供了类似于 console.trace() 生成的输出的详细堆栈跟踪:
DBX.Utils.stackTrace@http://localhost:49573/assets/js/scripts.js:44 DBX.Console.Debug@http://localhost:49573/assets/js/scripts.js:9 .success@http://localhost:49573/:462 x.Callbacks/c@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 x.Callbacks/p.fireWith@http://localhost:49573/assets/js/jquery-1.10.2.min.js:4 k@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6 .send/r@http://localhost:49573/assets/js/jquery-1.10.2.min.js:6
自定义堆栈跟踪函数
在不支持这些方法的旧版浏览器中,可以使用更复杂的函数来获取自定义堆栈跟踪:
function stacktrace() {
function st2(f) {
return !f ? [] :
st2(f.caller).concat([f.toString().split('(')[0].substring(9) '(' f.arguments.join(',') ')']);
}
return st2(arguments.callee.caller);
}
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3