如何摆脱输出“ java.lang.Exception

我写了一些简单的代码,但是我不明白为什么输出是这样。

代码如下:

public static void main( String args[] )
{
    // ADD LOOP CODE,ADD TRY CATCH BLOCK(S) AS NEEDED BELOW
    // BE SURE TO LEAVE THESE 3 LInes IN THERE SOMEWHERE  
    // SINCE THEY CONTAIN THE Exact EXPECTED OUTPUT TEXT

    Scanner kbd = new Scanner(System.in);
    int a = 0;
    String token;
    do
    {
        try
        {
            System.out.print("Enter int in range 1..100 inclusive: ");
            token = kbd.next();
            a = Integer.parseInt(token);
            if(a < 1 || a > 100) throw new Exception("Number:" + a + " out of range. Must be in 1..100");
        }
        catch(NumberFormatException nfe)
        {
            System.out.println("Input was not an integer");
        }
        catch(Exception e)
        {
            System.out.println(e);
        }
    }
    while(a < 1 || a > 100);
    System.out.format("Thank you. You entered %d\n",a );

    kbd.close();

}

这是输出:

在1..100(含)范围内输入int:-2

java.lang.Exception:数字:-2超出范围。必须在1..100

在1..100(含)范围内输入int:f

输入的不是整数

在1..100(含)范围内输入int:3

谢谢。您输入了3

我不明白的是,为什么一般异常在“ Number:a超出范围。必须在1..100”的期望输出之前抛出“ java.lang.Exception:”?有什么办法可以摆脱输出的这一部分?

supercow2110 回答:如何摆脱输出“ java.lang.Exception

您将抛出java.lang.Exception,因此将捕获到该异常,并且输出仅是异常的stdout的格式。如果您只想打印字符串,只需

System.out.println("Number:" + a + " out of range. Must be in 1..100");
在if语句块中的

,因为您的while循环已经捕获了相同的条件,所以该异常是多余的。也就是说,您已经检查了数字是否超出范围

,

更改此:

if(a < 1 || a > 100) throw new Exception("Number:" + a + " out of range. Must be in 1..100");

对此:

if(a < 1 || a > 100) throw new IllegalArgumentException("Input was not in range [1,100]");

然后捕获异常并仅打印消息:

catch(NumberFormatException nfe) {
  System.out.println("Input was not an integer");
}
catch(IllegalArgumentException iae) {
  System.out.println(iae.getMessage());
}
catch(Exception e) {
  System.out.println(e);
}

如果要显示其他文本,则在创建新的IllegalArgumentException时将消息定义为参数。如果您不希望该异常导致打印任何异常,请从catch块中删除System.out.println(iae.getMessage());

这将允许您为3种不同情况定义不同的行为:

  • 输入的不是整数
  • 输入超出范围
  • 所有其他例外情况
本文链接:https://www.f2er.com/3163777.html

大家都在问