Java學習筆記-基礎語法Ⅵ-異常
阿新 • • 發佈:2021-12-22
異常
對於異常,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這個靜態方法去解決