为了ease debugging在Internet Explorer中行为不端的一些棘手的异步Javascript代码,我想知道在给定Error对象的情况下是否可以获得有关其原始位置的有用信息。
Firefox,Chrome,Opera和其他所有其他不错的浏览器都让我这样做:
try{
throw Error('My custom error message');
}catch(e){
console.log(e.stack)
}
但我尝试过的所有属性(error.stack
和error.lineNumber
)都不适用于Internet Explorer。 有没有办法在Internet Explorer上获取此信息,仅使用Javascript?由于IE REPL将显示未处理异常的原始行号,即使它们被捕获并在另一行中重新抛出,我假设我想要的信息存储在某个地方,但我无法确定是否有公开的方式来获取它。
答案 0 :(得分:2)
这些属性在IE中不可用。您可以使用arguments.callee
图表获得一些方法。但是,如果您有很多匿名函数或频繁使用bind()
,则此方法效果不佳。
请参阅Closure Library's debug package中的goog.debug.getStacktrace()
了解示例实施。 goog.debug.normalizeErrorObject()
也可能对您有用。