2

爲了ease debugging一些棘手的異步JavaScript代碼,在Internet Explorer中行爲異常,我想知道是否有可能給定一個Error對象,獲取有關其原始位置的有用信息。有沒有辦法從Internet Explorer中的Error對象獲取行號或堆棧跟蹤?

火狐,Chrome,Opera和我猜所有其他瀏覽器不錯所有讓我做到這一點:

try{ 
    throw Error('My custom error message'); 
}catch(e){ 
    console.log(e.stack) 
} 

,但沒有我想的屬性(error.stackerror.lineNumber)對Internet Explorer上工作。 有沒有辦法在Internet Explorer上獲取此信息,僅使用Javascript?由於IE REPL將顯示未處理的異常的原始行號,即使它們被捕獲並重新排列在不同的行中,我假設我想要的信息被存儲在的某處,但我無法確定是否存在公共方法來解決它。

回答

2

這些屬性在IE中不可用。您可以通過使用arguments.callee圖表獲得一些方法。但是,如果您有大量匿名功能或經常使用bind(),則此方法效果不佳。

請參閱goog.debug.getStacktrace()Closure Library's debug package中的示例實現。 goog.debug.normalizeErrorObject()也可能對你有用。

+0

我有大量的匿名函數和使用'bind'的東西。我擰了嗎? :( – hugomg 2012-02-08 18:51:27

+0

試一試:)它可能仍然比沒有好。 – Dan 2012-02-08 20:02:04

相關問題