无法从InputMismatchException恢复

时间:2018-02-27 13:09:57

标签: java exception exception-handling

我正在学习java try catch并使用以下代码

public static void main(String[] args) {

    Scanner in = null;
    int i = 0;

    try {
        in = new Scanner(System.in);
        System.out.print("Enter a number: ");
        i = in.nextInt();
    } catch (InputMismatchException ex) {
        System.out.printf("%nPlease enter a number: %d", in.nextInt());
    } finally {
        if (in != null) {
            System.out.println();
            System.out.println("Finally block !!!");
            in.close();
        }
    }

}

运行那些程序并输入一个字符串,返回带有堆栈跟踪的java并退出(不要求用户输入正确的数字)。 如果我在catch块中删除了in.nextInt(),我看不到堆栈跟踪,但也没有要求用户输入 - 立即退出。

我无法弄清楚我的代码有什么问题

1 个答案:

答案 0 :(得分:3)

import matplotlib.pyplot as plt import numpy as np x_start, x_end = 0. , 10. y_start , y_end = 0. , 8. i = np.linspace(x_start, x_end, 80) j = np.linspace(y_start, y_end, 50) X,Y = np.meshgrid(i,j) Y[:,:40] += 1 plt.figure() plt.plot(X,Y, color="grey", lw=0.72) plt.plot(X.T,Y.T, color="grey", lw=0.72) plt.show() 块的工作原理如下:

  1. 执行try catch finally块中的代码,在这种情况下,让用户输入内容。
  2. 如果抛出try中指定的异常,则只执行catch阻止一次的代码。
  3. 执行catch块中的代码。
  4. 如果您要等到用户输入finally,您应该使用intfor循环:

    while