【问题标题】:Throwing errors in Javascript with error object relevancy在 Javascript 中抛出具有错误对象相关性的错误
【发布时间】:2010-12-07 00:14:33
【问题描述】:

这几乎与 IE 相关,因为 IE 是我用来测试它的环境,但我想知道当你抛出错误时是否会影响错误对象属性的相关性。考虑以下 javascript:

function MyClass (Arg1, Arg2)    // Line 5 of my.js
{
    if (typeof Arg1 != "string")
        throw new Error("Invalid argument passed for MyClass");
    // Do some other stuff here
}

进一步了解您的代码

var myvar = new MyClass(100, "Hello");    // Line 3201 of my.js

所以上面会抛出一个错误,但是调试信息中报告的错误会显示在 my.js 的第 9 行而不是第 3201 行抛出的错误。这是您可以使用标准方法更改的内容吗?

【问题讨论】:

    标签: javascript error-handling throw


    【解决方案1】:

    您真正要查找的是错误的堆栈跟踪。对此没有标准,但大多数浏览器确实提供了一些发现方法。快速搜索会出现这个js stack trace 示例。

    【讨论】:

    • 感谢您的回答,我正在研究没有调试器的堆栈跟踪,并找到了一个非常有用的链接eriwen.com/javascript/js-stack-trace。我构建 Windows 桌面小工具(在 IE 上构建),而不是使用 Visual Studio 进行调试,我通常只处理 window.onerror 并使用行/错误消息发出警报,这样我就可以直接在代码中找到它 - 它足够快速和简单方式,但我可以看到查看堆栈如何更有用。
    • 刚刚意识到你的链接是同一个 - 哎呀:)
    • 将此标记为答案,因为它是第一个。谢谢:)
    【解决方案2】:

    在 Firefox 中,您可以在捕获错误时使用堆栈属性。在其他浏览器中,您可以使用 message 属性。

    查看此链接以了解如何捕获stacktrace

    【讨论】:

    • 我之前找到了那个链接,很有趣,谢谢。
    猜你喜欢
    • 2011-08-07
    • 2018-02-18
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多