Java while循环如果出错一次就继续执行catch块中的代码

Java while loop continuously executing the code in catch block if error generated once

我想打印一个数字的乘法 table。所以我做了一个 while(true) 块来不断地从用户那里获取输入。我还制作了一个 try and catch 块,这样我就可以处理异常。
下面是我的代码:

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Getting the multiplication table of any number");
        while (true) {
            try {
                System.out.println();
                System.out.print("Enter a number: ");
                long number = scanner.nextLong();
                for (byte num = 1; num < 11; num++) {
                    System.out.println(number + "X" + num + " = " + (number * num));
                }
                System.out.println();
                System.out.println();
            } catch (Exception e) {
                System.out.println("Please enter a valid input.");
            }
        }
    }
}

当我 运行 程序时,它 运行 没问题,直到我只引入一个错误。然后它只给出输出:

Enter a number: Please enter a valid input.

两个语句都在同一行,并且只是连续打印该行,没有任何延迟,也没有让我给它输入。
为什么会发生这种情况,我该如何纠正?

您可以将 catch 块更改为:

catch (Exception e) {
      System.out.println("Please enter a valid input.");
      scanner.next();
}