我写了一些简单的代码,但是我不明白为什么输出是这样。
代码如下:
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:”?有什么办法可以摆脱输出的这一部分?