Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么会忽略此错误?_Javascript_Exception Handling - Fatal编程技术网

Javascript 为什么会忽略此错误?

Javascript 为什么会忽略此错误?,javascript,exception-handling,Javascript,Exception Handling,我正在阅读有说服力的JavaScript,其中有一部分代码我不理解 for (;;) { try { var dir = promtDirection(" Where ?"); // ← typo ! console.log(" You chose ", dir); break; } catch (e) { console.log(" Not a valid direction . Try again .");

我正在阅读有说服力的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,假设它知道问题所在,则 错误地将变量错误视为指示错误输入

但是,如果它正在捕获异常,那么它不应该只捕获由打印行的打字错误生成的错误吗

但是,如果它正在捕获异常,那么它不应该只捕获由输入错误生成的错误吗

在这一点上,它将声明方向无效,这不是正确的错误

然后终止

不,它将进入for循环的下一个迭代,在该迭代中,它将遇到相同的错误,无限重复

但是,如果它正在捕获异常,那么它不应该只捕获由输入错误生成的错误吗

在这一点上,它将声明方向无效,这不是正确的错误

然后终止


否,它将转到for循环的下一个迭代,在该迭代中,它将遇到相同的错误,无限重复。

代码的问题是catch块假定错误与用户输入有关。但事实并非如此,而且由于作为e传递的真正错误从未显示,开发人员将被误导地搜索它。为了使代码更具说服力,您应该使用e变量来显示更有用的消息。

代码的问题在于catch块假定错误与用户输入有关。但事实并非如此,而且由于作为e传递的真正错误从未显示,开发人员将被误导地搜索它。为了使代码更具说服力,您应该使用e变量来显示更有用的消息。

try-catch的目的是使其在出现错误时不会终止程序。您可以捕获错误,以便处理它并允许程序继续运行。这篇文章是说你应该在catch中做进一步的检查,即实际检查错误消息,因为这个catch只是假设提供了错误的答案,而事实上是一个编码错误导致了错误。try-catch的目的是使你的程序在错误发生时不会终止。您可以捕获错误,以便处理它并允许程序继续运行。这篇文章是说你应该在catch中做进一步的检查,即实际检查错误消息,因为这个catch只是假设提供了错误的答案,而实际上是编码错误导致了错误。不,它将转到for循环的下一次迭代。永远保持下去……不,它将进入for循环的下一个迭代。永远继续下去。。。