1. 程式人生 > 其它 >Java學習筆記-基礎語法Ⅵ-異常

Java學習筆記-基礎語法Ⅵ-異常

異常

對於異常,JVM預設處理方案為:把異常名稱、異常原因以及異常出現的位置等資訊輸出在控制檯,並且程式停止執行

異常處理方式一:try ... catch

public class Demo {
    public static void main(String[] args) {
        System.out.println("開始");
        show();
        System.out.println("結束");
    }
    public static void show(){
        int [] arr = {1,2,3};
        try {
            System.out.println(arr[2]);
            // ArrayIndexOutOfBoundsException
            System.out.println(arr[3]);
        }catch (ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
        }
    }
}

Throwable三個主要成員方法:printStackTrace、getMessage、toString

編譯時異常表示有可能出現異常,需要處理

異常處理方式二:throws

throws丟擲異常給上級,實際上並沒有解決異常,等到上級呼叫時再使用try catch或者繼續丟擲

也可以自定義異常(個人感覺不是很常用,因為有需要的話,寫個if語句就可以)

// 先定義一個異常,這個異常繼承Exception
public class ScoreException extends Exception{
    public ScoreException(){}
    public ScoreException(String message){
        super(message);
    }
}
// 再寫一個類,這個類中的方法語句可以丟擲異常物件,方法名丟擲異常類
public class Teacher {
    public void checkScore(int score) throws ScoreException {
        if(score<0||score>100){
            throw new ScoreException("分數有誤");
        }else{
            System.out.println("分數正常");
        }
    }
}
// 測試類
public class TeacherDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入分數");
        int score = sc.nextInt();

        Teacher t = new Teacher();
        try {
            t.checkScore(score);
        } catch (ScoreException e) {
            e.printStackTrace();
        }
    }
}

這裡測試類中採用的是try catch方法,如果在main中throws也是可以的,那這樣相當於拋給了main這個靜態方法去解決