jmu-Java-06異常-01-常見異常

黒白的黑發表於2020-10-05

自己編碼以產生常見異常。

main方法:

  1. 事先定義好一個大小為5的陣列。
  2. 根據螢幕輸入產生相應異常

提示: 可以使用System.out.println(e)列印異常物件的資訊,其中e為捕獲到的異常物件。

輸入說明:

  1. arr 代表產生訪問陣列是產生的異常。然後輸入下標 ,如果丟擲ArrayIndexOutOfBoundsException異常則顯示,如果不丟擲異常則不顯示。
  2. null,產生NullPointerException
  3. cast,嘗試將String物件強制轉化為Integer物件,產生ClassCastException
  4. num,然後輸入字元,轉化為Integer,如果丟擲NumberFormatException異常則顯示。
  5. 其他,結束程式。

輸入樣例:

arr 4
null
cast
num 8
arr 7
num a
other

輸出樣例:

java.lang.NullPointerException
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
java.lang.ArrayIndexOutOfBoundsException: 7
java.lang.NumberFormatException: For input string: "a"


答案

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Integer[] arr = new Integer[5];
        label:
        while(scanner.hasNext()){
            String str = scanner.next();
            switch (str) {
                case "arr":
                    int index = scanner.nextInt();
                    try {
                        Integer test1 = arr[index];
                    } catch (ArrayIndexOutOfBoundsException e) {
                        System.out.println(e);
                    }
                    break;
                case "null":
                    try {
                        String test2 = null;
                        boolean b = test2.equals("null");
                    }catch (Exception e){
                        System.out.println(e);
                    }
                    break;
                case "cast":
                    try{
                        Object test3 = "1";
                        Integer s = (Integer)test3;
                    }catch (Exception e){
                        System.out.println(e);
                    }
                    break;
                case "num":
                    String temp = scanner.next();
                    try{
                        Integer temp1 = Integer.parseInt(temp);
                    }catch (NumberFormatException e){
                        System.out.println(e);
                    }
                    break;
                default:
                    break label;
            }
        }
    }
}

相關文章