首页 > web前端 > js教程 > 如何检索自定义 JavaScript 异常的堆栈跟踪?

如何检索自定义 JavaScript 异常的堆栈跟踪?

Linda Hamilton
发布: 2024-10-17 22:28:29
原创
219 人浏览过

How to Retrieve Stack Traces for Custom JavaScript Exceptions?

获取自定义异常的 JavaScript 堆栈跟踪

运行 JavaScript 代码时,异常可以为您的脚本遇到的问题提供有价值的见解。然而,获取自己抛出的异常的堆栈跟踪是一个挑战。本文解决了这个问题,并提供了专门针对您自己的异常获取堆栈跟踪的解决方案。

最初,只能获取内置 JavaScript 异常的堆栈跟踪。然而,现代浏览器的进步引入了新技术来解决此限制。

现代浏览器的 Console.trace()

在最近的浏览器中,console.trace( )方法可用。通过调用它,您可以获得包含 console.trace() 调用位置的堆栈跟踪。

<code class="javascript">console.trace();</code>
登录后复制

所有浏览器的错误堆栈属性

评论者对原始问题分享的一个改进的解决方案涉及利用 Error 对象的 stack 属性。

<code class="javascript">function stackTrace() {
    var err = new Error();
    return err.stack;
}</code>
登录后复制

此方法提供了类似于 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
登录后复制

自定义堆栈跟踪函数

在不支持这些方法的旧版浏览器中,可以使用更复杂的函数来获取自定义堆栈跟踪:

<code class="javascript">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);
}</code>
登录后复制

以上是如何检索自定义 JavaScript 异常的堆栈跟踪?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板