我正在阅读Eloquent JavaScript,但有一部分代码我不明白。
for (;;) {
try {
var dir = promtDirection(" Where ?"); // ← typo !
console.log(" You chose ", dir);
break;
} catch (e) {
console.log(" Not a valid direction . Try again .");
}
}
这本书说:
但我们拼写错误的promptDirection,这将导致“未定义 变量“错误。因为catch块完全忽略了它 异常值(e),假设它知道问题是什么,它 错误地将变量错误视为指示错误输入。
但是,如果它是全面捕捉异常,那么它不应该只是抓住错字打印出来的错误吗?
答案 0 :(得分:3)
但是,如果它是全面捕捉异常,那么它不应该只是抓住错误产生的错误
是
此时它会声明方向无效,这不是正确的错误。
并终止?
不,它将进入for循环的下一次迭代(此时它会遇到同样的错误,无限重复)。
答案 1 :(得分:1)
代码的问题在于catch块假定错误与用户输入有关。但事实并非如此,并且由于真正的错误(作为e传递)从未显示过,开发人员将被误导搜索它。成为"雄辩的#34;你的代码应该使用e变量来显示更有用的消息。