如何知道错误所在的那一行?

时间:2014-03-25 16:03:36

标签: javascript line-numbers

在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)";

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

谢谢!

3 个答案:

答案 0 :(得分: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?

答案 1 :(得分:0)

Javascript默认也会抛出错误,但不是在屏幕上打印它们,而是在控制台中显示。按F12打开浏览器的调试/开发人员模式并刷新页面。如果弹出任何javascript错误,它会显示出错的地方。

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

答案 2 :(得分:0)

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