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

Gre*_*icz 12 javascript mobile ios

在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
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

更新:我发现e.line适用于Safari,但仍然无法在最新的iOS版iPhone上使用

Vic*_*tor 6

尝试使用e.lineNumber. 例如:

try {
   var i = v.WillGenerateError;
} catch (e) {
   alert(e.lineNumber);
}
Run Code Online (Sandbox Code Playgroud)

  • @GregBala 这是一个 [mozilla 扩展](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error) (3认同)