当我运行简单的代码并输入 char 而不是应该输入的整数值时。 下面列出的程序应该在打印“错误后输入整数值后终止。
但是这段代码也在错误
出现后打印了这一行import java.util.InputMismatchException;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
System.out.println("enter value integer ");
Scanner sn = new Scanner(System.in);
try{
int a = sn.nextInt();
} catch (InputMismatchException ex){
System.out.println("error please enter integer value");
}
System.out.println("not terminating");
}
}
答案 0 :(得分:0)
它正在终止,它首先打印出System.out。这是预期的 - 它跳入catch块,然后继续。
答案 1 :(得分:0)
但是这段代码,也是在发生错误后打印行
因为它不在try-catch的一边,所以这是异常处理的优势。
异常处理可防止由于运行时错误导致程序异常终止。这就是发生的事情。
答案 2 :(得分:0)
System.out.println("enter value integer ");
Scanner sn = new Scanner(System.in);
try {
int a = sn.nextInt();
} catch (InputMismatchException ex) {
System.out.println("error please enter integer value");
// you are catching input mis match here
// exception will catch and program continues
}
System.out.println("not terminating"); // this is out side the try-catch
所以你也会在你的出局中得到这条线。
答案 3 :(得分:0)
进入catch
块后,流程继续,因此下一行要执行的是底部打印。
如果您想在catch
:
try {
int a = sn.nextInt();
} catch (InputMismatchException ex) {
System.out.println("error please enter integer value");
return; // program will end
}
答案 4 :(得分:0)
如果你希望终止它,你需要重新抛出异常,例如:
System.out.println("enter value integer ");
Scanner sn = new Scanner(System.in);
try {
int a = sn.nextInt();
} catch (InputMismatchException ex) {
System.out.println("error please enter integer value");
throw new RuntimeException(ex);
}
System.out.println("not terminating"); // this is out side the try-catch
这样就不会打印最后一个系统输出,而是会得到一个堆栈跟踪。