JavaScript 中的 try-catch:如何获取原始错误的堆栈跟踪或行号

新手上路,请多包涵

在JavaScript中使用TRY-CATCH时,如何获取导致错误的行的行号?

在许多浏览器上,下面的代码将运行良好,我将获得指向抛出异常的实际行的堆栈跟踪。

但是,某些浏览器没有“e.stack”。 iPhone 的 safari 就是一个例子。

有没有办法获得适用于所有浏览器的行号?

 try
{
   // lots of code here
   var i = v.WillGenerateError; // how to get this line number in catch??
   // lots of code here
}
catch (e)
{
     alert (e.stack)  // this will work on chrome, FF. will no not work on safari
     alert (e.line)  // this will work on safari but not on IPhone
}

非常感谢!

更新:我发现 e.line 可以在 safari 上使用,但在最新的 iOS 版本的 iPhone 上仍然不可用

原文由 Greg Bala 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 896
1 个回答

尝试使用 e.lineNumber 。例如:

 try {
   var i = v.WillGenerateError;
} catch (e) {
   alert(e.lineNumber);
}

原文由 Victor 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题