2009-10-15 92 views
5

这几乎与IE有关,因为IE是我用来测试这个的环境,但是我想知道当抛出一个错误时,是否可以影响错误对象属性的相关性错误。考虑下面的javascript:在错误对象相关性的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 

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

回答

2

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

+0

感谢您的回答,我已经调查了没有调试器的堆栈跟踪,并发现了一个非常有用的链接http://eriwen.com/javascript/js-stack-trace/。我构建Windows桌面小工具(基于IE),而不是使用Visual Studio进行调试,我通常只是处理window.onerror并通过行/错误消息警告,以便我可以直接在代码中进行操作 - 它非常快速且简单但我可以看到如何看到堆栈更有用。 – 2009-10-15 12:09:59

+0

刚刚意识到你的链接是同一个 - 哎呀:) – 2009-10-16 08:06:50

+0

标记为答案,因为它是第一个。谢谢:) – 2009-10-19 08:24:04

2

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

看看这个链接如何赶上stacktrace

+0

我发现早期的链接,这很有趣,谢谢。 – 2009-10-15 12:10:54