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;
}
答案 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'的字符抛出错误...