2009-10-15 91 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