在谷歌浏览器和Internet Explorer中,exception.lineNumber返回“undefined”

5
我需要从JavaScript异常中获取fileName、Message、LineNumber等信息。我尝试了以下代码。
try {
  alertt("dddd");
} catch (e) {
  console.log("ExceptionType: "+ e.name);
  console.log("Message: "+ e.message);
  console.log("Line No: "+ e.lineNumber);
}

在Mozilla Firefox中,我得到了以下结果:

异常类型:ReferenceError
错误信息:alertt未定义
行号:4

但相同的代码在Google Chrome和Internet Explorer中给出了以下结果:

异常类型:ReferenceError
错误信息:alertt未定义
行号:未定义

它没有给出行号。如何解决这个问题?还有没有其他方法可以获取行号?
我尝试过e.stack,它将堆栈跟踪返回为字符串。在Google Chrome中,它给了我以下输出:
 ReferenceError: alertt is not defined
    at message (http://localhost/ems-test/js/test.js:4:4)
    at HTMLDocument.<anonymous> (http://localhost/ems-test/js/test.js:14:2)
    at c (http://localhost/ems-test/js/jquery-1.10.2.min.js:4:26036)
    at Object.p.fireWith [as resolveWith] (http://localhost/ems-test/js/jquery-1.10.2.min.js:4:26840)
    at Function.x.extend.ready (http://localhost/ems-test/js/jquery-1.10.2.min.js:4:3305)
    at HTMLDocument.q (http://localhost/ems-test/js/jquery-1.10.2.min.js:4:717) 

并且火狐浏览器给出了这个结果。
message@http://localhost/ems-test/js/test.js:4
@http://localhost/ems-test/js/test.js:14
x.Callbacks/c@http://localhost/ems-test/js/jquery-1.10.2.min.js:4
x.Callbacks/p.fireWith@http://localhost/ems-test/js/jquery-1.10.2.min.js:4
.ready@http://localhost/ems-test/js/jquery-1.10.2.min.js:4
q@http://localhost/ems-test/js/jquery-1.10.2.min.js:4

两个都是字符串类型的结果。不是一个对象。所以需要从这个巨大的字符串中提取行号。但问题是两个结果不同。一个在第一行显示行号,另一个在第二行显示行号。因此从这个巨大的字符串中提取行号将会很困难。

有没有办法将堆栈跟踪作为对象获取?


3
Error对象API没有标准化。 - Pointy
有没有其他方法可以获取行号? - Sajith
1
可能堆栈包含行号:e.stack - HMR
1
请查看此堆栈跟踪库 https://github.com/eriwen/javascript-stacktrace - Raab
如果您从控制台执行,则行号可能会显得模糊不清。行号通常是包含代码的脚本/HTML的行号,而不是注入脚本的行号。HTML和脚本错误/行号标准化,但对于注入脚本,这取决于浏览器实现。 - user568109
显示剩余7条评论
2个回答

2

这个我已经完成了。我的要求是用try...catch来实现。 - Sajith
2
在使用 window.onerror() 时,我们可以获取行号。但是在使用 try{}catch{} 时如何获取行号呢? - Sajith
这个可以运行。 - cs641311

1

我机器上没有IE,所以无法评论它;但在Chrome中,您可以通过查看e.stack属性并解析它来获得所需的内容。如果您在catch块内执行console.dir(e),则可以查看可用选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接