我想使用try-catch-finally语句错误检查用户输入,然后在没有错误的情况下进入下一页(我知道有更简单的方法来做到这一点,但我被要求使用try-catch-finally)。在这种情况下:foo是用户的输入,输入需要是介于0和100之间的数字,而displayDiagram()会将用户推到下一页。在try-catch-finally中使用else-if语句
一切都适合我,直到finally块。如果用户根本没有输入任何内容,则前进到下一张幻灯片。如果没有输入任何内容,我该如何阻止它前进?
下面的代码:
try {
if (foo == "") throw "Enter your estimated score";
if (isNaN(foo)) throw "Only use numbers for your estimated score";
if (foo < 0) throw "Estimated score is not valid. Enter a higher number";
if (foo > 100) throw "Estimated score is too high. Enter a lower number";
}
catch(err) {
document.getElementById("fooMessage").innerHTML = err;
document.getElementById("fooInput").style.borderColor = "red";
}
finally {
if (err = undefined) {
displayDiagram();
}
}
另一个finally块我曾尝试包括:
finally {
if (preScore >= 0 && preScore <= 100) {
displayDiagram();
} else if (typeof preScore != "string") {
displayDiagram();
}
}
任何想法?谢谢!
暗示最后需要:赋值运算符VS比较。 '='vs'==' – ippi
提示2:错误只是*可见*在catch内部 - 所以'=='不会修复底层问题 –
事实上,我认为问题中的代码有一个错字,因为'如果(错误=未定义)'会** **永远**是真实的,并可能会抛出一个错误 - 所以'displayDiagram'将** **不会执行。唯一可以运行的方式是,如果有'var err'这个未定义**和**代码使用'=='而不是'=' - 在这种情况下'displayDiagram'会**总是**运行无论什么 –