【发布时间】:2011-04-01 09:53:28
【问题描述】:
我正在构建一些包含 javascripts 的东西,它可以异步运行,但我希望改进错误检测(所以所有错误似乎不仅仅来自 AJAX 调用附近的某行把他们拉下来。
如果我使用 eval 来评估多行 javascript 文件,有什么方法可以追踪错误发生在哪一行?
通过在包含时保留对我需要的变量的引用,我可以确定错误发生在哪个文件中。我的问题是确定错误发生在哪个行。
例子:
try {
eval("var valid_statement = 7; \n invalid_statement())))");
} catch(e) {
var err = new Error();
err.message = 'Error in Evald Script: ' + e.message;
err.lineNumber = ???
throw err;
}
如何判断错误发生在第二行? 具体来说,我有兴趣在 Firefox 中执行此操作。
我知道错误对象在 Mozilla 浏览器中具有 e.stack,但输出似乎没有正确考虑换行符。
【问题讨论】:
-
你想要哪个“第二行”?
eval和评估字符串中的语法错误都在第 2 行。 -
在上面显示的代码上下文中,是的。在封装在字符串中的代码的上下文中,没有。我希望像在文件中那样解析换行符,这样我就可以报告 eval'd 字符串中发生的行错误。
标签: javascript error-handling eval