Javascript:显示知道其编号的行的内容

时间:2012-10-20 17:39:36

标签: javascript error-handling line

我正在处理JavaScript应用程序而我正在尝试修复错误,但我无法找到它。这就是我所拥有的。

 function my_function (txt) {
    try {
        return eval('('+ txt + ')');
    }
    catch(e) {
      alert(e.lineNumber);
      return eval(txt);
    }

我将文件内容传递给该函数,似乎此文件中存在问题。问题是这一行

          alert(e.lineNumber);
即使我在文件的开头添加行,

总是返回相同的数字,所以我想确保我正在编辑正确的行。为此,我希望它显示包含错误的行的内容。

请帮帮我。

3 个答案:

答案 0 :(得分:0)

您可以使用e.stack打印stacktrace

....
catch(e) {
      alert(e.lineNumber);
      console.log(e.stack)
      return eval(txt);
    }

答案 1 :(得分:0)

基本上有两种情况:      - 如果是语法错误,则错误将被报告为触发它的“eval”调用的位置(不是“源”文件中的位置),      - 如果它是语义错误(解析但在运行时失败),那么请查看http://eriwen.com/javascript/js-stack-trace/以获得有关跨浏览器堆栈转储的一些想法。

要调试第一种情况,您可能必须捕获文件内容并尝试单独解析它(可能使用节点或jsl)。

我不太清楚你要做什么,但我不得不说代码示例提出了一些问题(为什么eval不是JSON.parse,为什么读取文件然后eval而不是包含它并调用函数,第二个评估是什么。

答案 2 :(得分:0)

捕获脚本文本,如有必要,使用console.log (txt)并将输出复制粘贴到文件中。将<script>放在该文件的顶部,将</script>放在底部。使文件名以.html结尾。现在双击该文件图标。这将启动您的浏览器,该浏览器将读取脚本并将任何语法错误输出到浏览器控制台,显示它们出现的行号。