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

相关问题