有没有一种方法可以从Internet Explorer中的Error对象中获取行号或堆栈跟踪

Is there a way to get line numbers or stack traces from an Error object in Internet Explorer?

本文关键字:对象 Error 中的 获取 跟踪 堆栈 Explorer Internet 一种 方法 有没有      更新时间:2023-09-26

为了方便调试一些在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上工作有没有办法只使用Javascript在Internet Explorer上获取这些信息由于IE REPL将显示未处理异常的原始行号,即使它们在另一行中被捕获并重新抛出,我认为我想要的信息被存储在的某个地方,但我找不到是否有公共方法来获取它。

这些属性在IE中不可用。您可以通过使用arguments.callee图来获得一些方法。然而,如果您有很多匿名函数或频繁使用bind(),则这种方法不会很好地工作。

有关示例实现,请参阅闭包库调试包中的goog.debug.getStacktrace()goog.debug.normalizeErrorObject()也可能对您有用。