【问题标题】:how to know the line where the mistake is?如何知道错误所在的行?
【发布时间】:2014-03-25 16:03:35
【问题描述】:

在 php 中,当我们做错事时,会显示一个错误,其中包含已提交的行号。我想在 javascript 中也一样,你会从我的代码中理解:

var varlist = {};
var private = {
 str : function(nameArg, valueArg, security){
     if (varlist.hasOwnProperty(nameArg) === true){
         throw  "Variable Existance : variable "+nameArg +" is already exist in your variable list and cannot be overwritten in private type";
     }else if(security === "h"){
         var stre = String(valueArg);
         var strnew = stre.replace(/\d/g, "");
     varlist[nameArg] = strnew;
     }else if(security === "l"){
         varlist[nameArg] = String(valueArg);
     }else if(security !== "h" || security !== "n"){
             varlist[nameArg] = String(valueArg);
         throw "Unexpected Security Level: Entered " +security+" is unexpected and the default security level is low(l)";
     }
     }
    }

现在查看最后一个throw 语句,如果安全性不是"h""l",那么它会抛出异常,如您所见。 现在假设我在我的代码编辑器中在线显示 90,我在那里写了 private.str("abc",9000,"o");,其中 "o" 无效。所以javascript应该找到写private.str("abc",9000,"o");的那一行,然后抛出"Unexpected Security Level: Entered " +security+" is unexpected on line "+line_number+" and the default security level is low(l)";,这里例如line_number是90。 所以javascript应该抛出这个语句"Unexpected Security Level: Entered o is unexpected on line 90 and the default security level is low(l)";

我试图搜索这个,但在我的知识范围内没有一个可以帮助

谢谢!

【问题讨论】:

    标签: javascript line-numbers


    【解决方案1】:

    您可以使用 firebug 或 js 控制台,或使用类似这样的代码进行操作

    var
    line=(new Error).stack.split("\n")[4],
    nr=line.slice(line.indexOf("at ")+2, line.length);
    

    (How to get JavaScript caller function line number? How to get JavaScript caller source URL?)

    【讨论】:

    • 应该是 line.indexOf
    【解决方案2】:

    默认情况下,Javascript 也会抛出错误,但不是将其打印在屏幕上,而是显示在控制台中。按 F12 打开浏览器的调试/开发者模式并刷新页面。如果弹出任何 javascript 错误,它会告诉你哪里出错了。

    使用console.log,您还可以将自己的“错误”添加到控制台以进行跟踪。

    【讨论】:

    • 好的,但主要是我想知道在编写脚本时错误在哪里
    【解决方案3】:

    您可以使用this technique 在代码中的任何位置获取堆栈跟踪。此代码抛出并捕获一个假异常并返回Error.prototype.stack 的内容。浏览器支持:Chrome、Firefox、IE(10 及以上)、Opera、Safari(6 及以上)。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 2014-10-31
      • 1970-01-01
      相关资源
      最近更新 更多