Консоль Google Chrome JavaScript сообщает мне «Uncaught…»

0

Веб-разработчик n00b здесь. Я пытался проверить свою функцию JavaScript decryptStr в теле:

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

Я запустил его в Google Chrome и в консоли JavaScript,

Ненормальный вход; не может расшифровать.

Я смущен тем, что это значит. Подумайте, в чем проблема? "Неправильная единица, не может расшифровывать" - это строка, соответствующая типу ошибки, которую должна была улавливать следующая функция в том случае, если введенная строка не была надлежащей формы:

    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;
    }
  • 0
    Пожалуйста, создайте jsfiddle -> jsfiddle.net
  • 0
    Здесь нет ошибок: jsfiddle.net/vY3Kr
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Я считаю, что это потому, что вы бросаете ошибку и не поймаете ее в своем коде...

Посмотрите здесь

В основном базовый, оператор "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", если я не ошибаюсь...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню