为了ease debugging一些棘手的异步 Javascript 代码在 Internet Explorer 中行为不当,我想知道是否有可能在给定 Error 对象的情况下获取有关其原始位置的有用信息。
Firefox、Chrome、Opera 和我想所有其他不错的浏览器都可以让我这样做:
try{
throw Error('My custom error message');
}catch(e){
console.log(e.stack)
}
但我尝试过的所有属性(error.stack
和 error.lineNumber
)都不能在 Internet Explorer 上运行。 有没有办法只使用 Javascript 在 Internet Explorer 上获取此信息?由于 IE REPL 将显示未处理异常的原始行号,即使它们在不同的行中被捕获并重新抛出,我假设我想要的信息存储在某处,但我无法确定是否有公共(public)方式来获取它。
最佳答案
这些属性在 IE 中不可用。您可以通过使用 arguments.callee
图获得一些方法。但是,如果您有很多匿名函数或经常使用 bind()
,则此方法效果不佳。
参见 Closure Library's debug package 中的 goog.debug.getStacktrace()
一个示例实现。 goog.debug.normalizeErrorObject()
也可能对您有用。
关于javascript - 有没有办法从 Internet Explorer 中的错误对象获取行号或堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199183/