有没有办法从Internet Explorer中的Error对象获取行号或堆栈跟踪?

时间:2012-02-08 18:22:45

标签: javascript debugging internet-explorer exception exception-handling

为了ease debugging在Internet Explorer中行为不端的一些棘手的异步Javascript代码,我想知道在给定Error对象的情况下是否可以获得有关其原始位置的有用信息。

Firefox,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将显示未处理异常的原始行号,即使它们被捕获并在另一行中重新抛出,我假设我想要的信息存储在某个地方,但我无法确定是否有公开的方式来获取它。

1 个答案:

答案 0 :(得分:2)

这些属性在IE中不可用。您可以使用arguments.callee图表获得一些方法。但是,如果您有很多匿名函数或频繁使用bind(),则此方法效果不佳。

请参阅Closure Library's debug package中的goog.debug.getStacktrace()了解示例实施。 goog.debug.normalizeErrorObject()也可能对您有用。