5

这几乎与 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 行抛出的错误。这是您可以使用标准方法更改的内容吗?

4

2 回答 2

2

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

于 2009-10-15T11:56:59.423 回答
2

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

看看这个关于如何捕捉堆栈跟踪的链接。

于 2009-10-15T12:04:14.963 回答