【发布时间】:2012-06-11 22:04:18
【问题描述】:
在 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 上运行,但在 iPhone 上仍然不可用,最新的 iOS 版本
【问题讨论】:
-
为什么不直接删除
try...catch看看标准错误信息指向哪一行? -
@robertc 我需要 try...catch 其他原因。比如我想捕获错误发生时的状态
-
你现在在 iPhone 上收到了吗?您正在寻找更多信息以追踪错误,有一种方法可以获得比目前更多的信息,您为什么不想利用它?
-
@robertc 例如 - 我想在错误发生时准确地捕获所有函数变量中的当前值。据我所知,我只能在捕捉中做到这一点。我知道我可以省略 try ... catch all together,并使用 window.onerror 给我行号,但这还不够而且它也不是在所有浏览器中都可用
-
谢谢你,但是:“你也可以传入你自己的错误来获取不在 IE 或 Safari 中的堆栈跟踪,但是:(”这正是我的情况 :)
标签: javascript ios mobile