【问题标题】:Retrieving the line number from an Internet Explorer error object从 Internet Explorer 错误对象中检索行号
【发布时间】:2012-05-24 05:07:40
【问题描述】:

有没有办法从 Internet Explorer 7/8 错误对象中检索行号?

我只知道 .message、.description 和 .number 属性。

我搜索了一下,发现了一篇关于 .stack (http://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx) 的 MSDN 文章,但即使使用他们自己的示例代码也不会返回行号:

http://jsfiddle.net/LWevS/

【问题讨论】:

  • this question 有帮助吗?
  • 不幸的是它没有,我不是为开发目的设置调试器,而是在代码投入生产时设置。我们希望能够打开 JS 错误日志并存储回行号,而不仅仅是对错误的描述。
  • 您或许应该编辑您的问题以添加该信息,因为它会影响可能的答案。
  • 没有答案,对不起,但我不得不评论,因为你的名字离我很近。 :-)

标签: javascript internet-explorer


【解决方案1】:

我又挖了一些,发现可以使用 window.onerror 在 IE 中检索行号。它不是来自 Error 对象本身,而是一个不错的解决方法:

function BadFunction(){
    This.badcode.willnot.work = 1000
}

function ForceError(msg, url, lno) {
  alert("Error Occurred! Handled by Generic Error Handler" + "\n" +
     "Error: " + msg + "\n" + "URL: " + url + "\n" +   
     "Line Number: " + lno);

  return true;
}

window.onerror = ForceError;

此方法要求错误冒泡到窗口。如果您的代码中有 try/catch,则需要重新抛出错误以便它冒泡。

在研究这个问题的解决方案时,我还在 GitHub 上遇到了 StackTraceJS。他们的堆栈跟踪脚本适用于除 Internet Explorer 之外的所有浏览器。如果您想记录客户端浏览器上产生的错误,这是一款出色的运行时调试器。

http://stacktracejs.com/

【讨论】:

  • 如何在try..catch中重新抛出错误!可以举个例子吗!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-19
  • 2016-12-08
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多