這段程式是我寫的是一個用try catch進行異常捕獲。但我發覺。我似乎只能捕獲算數運算異常,無法捕獲輸入格式異常
package exceptionDemo;
import java.util.Scanner;
public class ExceptionDemo01 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Scanner scanner=new Scanner(System.in);
System.out.println("請輸入數位");
int num=scanner.nextInt();
System.out.println("請輸入數位");
int num2=scanner.nextInt();
int temp=num/num2;
System.out.println("獲得結果"+temp);
}
catch (ArithmeticException e) {
// TODO: handle exception
System.out.println("算數運算異常:————"+e);
}
catch (NumberFormatException e) {
// TODO: handle exception
System.out.println("輸入格式異常:——————"+e);
}
catch (ArrayIndexOutOfBoundsException e) {
// TODO: handle exception
System.out.println("沒有輸入參數或者輸入參數數目錯誤"+e);
}
finally{
System.out.println("執行此代碼");
}
}
}
這是運行捕獲算數運算異常(即輸入一個除數為1,被除數書為0)
請輸入數位
1
請輸入數位
0
算數運算異常:————java.lang.ArithmeticException: / by zero
執行此代碼
但我希望捕獲輸入格式異常卻不行.,我第一次輸入1,第二次輸入a就直接運行錯誤,無法被捕獲
請輸入數位
1
請輸入數位
a
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at exceptionDemo.ExceptionDemo01.main(ExceptionDemo01.java:18)
執行此代碼