5

I need to get fileName, Message, LineNumber etc from a javascript exception. I tried the following code.

try {
  alertt("dddd");
} catch (e) {
  console.log("ExceptionType: "+ e.name);
  console.log("Message: "+ e.message);
  console.log("Line No: "+ e.lineNumber);
}

I got the following result in Mozilla Firefox

ExceptionType: ReferenceError
Message: alertt is not defined
Line No: 4

But the same code gave the following result in Google Chrome, Internet Explorer

ExceptionType: ReferenceError
Message: alertt is not defined
Line No: undefined

It is not giving the Line Number. How to solve this issue? Is there any another method for getting Line number?

I tried e.stack It returns the stack trace as string. It gave me the following output in 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) 

and firefox gave this result

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

Both are string type result. Not an object. So it needs to extract the line number from this huge string. But the problem is both result are not same. One shows the line number in first line and another one shows it in second line. So it will be difficult to extract line number from this huge string.

Is there any method to get the stack trace as an object?

4

2 回答 2

2
window.onerror = function (msg, url, line) {
   alert("Message : " + msg );
   alert("url : " + url );
   alert("Line number : " + line );
}

希望这可以帮助你。检查此链接:http ://www.tutorialspoint.com/cgi-bin/practice.cgi?file=javascript_40

于 2013-11-06T04:15:44.247 回答
1

我的机器上没有 IE,所以我不能这么说;但是在 Chrome 中,您可以通过查看 e.stack 属性并将其解析出来来获得所需的内容。如果您在 catch 块中执行 console.dir(e),您可以看到可用的选项。

于 2013-11-21T02:05:22.233 回答