我的程序没有编译并向我显示此错误:
System.out.println("Error: "+ e.getMessage());
Scanner scanner = new Scanner(System.in);
try {
int num = scanner.nextInt();
if (num != 0) {
throw new Exception("Not zero");
}
System.out.println("I'm happy with the input.");
} catch (InputMismatchException e) //InputMismatchException is never thrown in body of corresponding try statement
{
System.out.println("Invalid Entry");
} catch (Exception e) {
System.out.println("Error: "+ e.getMessage());
}
答案 0 :(得分:3)
错误信息非常明确:
在相应的try语句
的主体中永远不会抛出InputMismatchException
您正在尝试捕获一个保证不会从try块抛出的异常。这没用,甚至无效。删除catch (InputMismatchException e)
块。
实际上,try块可以抛出java.util.InputMismatchException
。所以我猜你实际上正在捕获另一个包的InputMismatchException。检查您的导入,并确保导入java.util.InputMismatchException
而不是其他com.foo.bar.InputMismatchException
。
编辑:
错误消息证实了我的想法。您正在捕捉javaapplication9.InputMismatchException
,而不是java.util.InputMismatchException
。我不确定你为什么定义自己的InputMismatchException。