javascript - 跟踪 Javascript eval 中错误的源代码行

标签 javascript error-handling eval

我正在构建一些包含动态异步 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/

相关文章:

javascript - 快速 session 不持久

vba - 检查工作表名称以避免重复

javascript - iMacros URL 提取问题 - 需要 Java Script EVAL 解决方案

javascript - 在 iMacros 中使用 EVAL 和 REGEX 提取字符

JavaScript 无法在 Rails 5 应用程序中运行

javascript - 构建客户端应用程序时,在本地存储中的键中使用前缀有什么好处? (特别是在 AngularJS/Angular 应用程序中)

javascript - JSON 只返回一个对象

python - Python程序中发生错误(1046, 'No database selected'),但mysql工作台中没有发生错误

ms-access - 在MS Access中打开另一个窗体时关闭当前窗体

ruby - 不能将数组元素连接成一个字符串?