我正在构建一些包含动态异步 javascript 的东西,这很有效,但我正在寻求改进错误检测(因此所有错误似乎不仅仅来自 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
所在的那行开始。 - 错误对象具有创建它所在行的行号。
所以像...
try {
eval('var valid_statement = 7; \n invalid_statement())))');
} catch(e) {
var err = e.constructor('Error in Evaled Script: ' + e.message);
// +3 because `err` has the line number of the `eval` line plus two.
err.lineNumber = e.lineNumber - err.lineNumber + 3;
throw err;
}
关于javascript - 跟踪 Javascript eval 中错误的源代码行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3526902/