Google Chrome JavaScript控制台告诉我" Uncaught ...."

时间:2014-03-18 22:18:57

标签: javascript html

Web开发人员n00b在这里。我试图在身体中测试我的JavaScript函数decryptStr,如下所示:

<script type="text/javascript">
  var str = "010510160";
  document.write(decryptStr(str));
</script>

我在谷歌浏览器中运行它,JavaScript控制台说,

  

Uncaught不正确的输入;无法解密。

我对这意味着什么感到困惑。知道这里的问题是什么吗? &#34;不正确的单位;无法解密&#34;是一个字符串,对应于以下函数在输入的字符串格式不正确时应该捕获的错误类型:

    function decryptStr(thisString) 
    {
        var decryptInputError = "Improper input; cannot decrypt.";
        thisString.trim();
        var retString = "";
        for (var i = 0, j = thisString.length; i < j; ++i) 
        {
            var thisChar = thisString.charAt(i);
            if (thisChar > '9' || thisChar < '0')
            {
                throw decryptInputError;
                return;
            }
            else if (thisChar > '1' && thisChar < '10') 
            {
                var nextChar = thisString.charAt(i+1);
                if (nextChar < '0' || nextChar > '1')
                {
                    throw decryptInputError;
                    return;
                }
                var thisSubtring = "";
                for (var j = 0, k = parseInt(thisChar, 10); j < k; j++)
                    thisSubstring += nextChar;
                retString += thisSubstring;
            }
            else 
            {
                retString += thisChar;
            }
        }
        if (!(retString.length % 8))
        {
            throw decryptInputError;
            return;
        }
        for (var i = 0, j = retString.length; i < j; i += 8)
        {
            retString = "";
            retString += parseInt(thisString.substr(i,8), 2);
        }
        return retString;
    }

1 个答案:

答案 0 :(得分:1)

我相信这是因为你抛出了错误并且没有在你的代码中捕获它......

here

基本上,基本上,“throw”语句是为了您可以创建自己的自定义错误。您仍然需要“捕获”它们并在其余代码中处理错误。

<script type="text/javascript">
  try{
      var str = "010510160";
      document.write(decryptStr(str));
  }
  catch(err){
   //error handling code here
  }
</script>

另外,这段代码:

if (nextChar < '0' || nextChar > '1')
{
  throw decryptInputError;
  return;
}
如果我没有弄错的话,

会为每个不是'0'或'1'的字符抛出错误...