異常——JavaSE基礎
阿新 • • 發佈:2021-06-28
異常
異常的分類
- 檢查性異常:
- 執行時異常:可能被程式設計師避免的異常,執行時異常可以在編譯時被忽略
- 錯誤ERROR:錯誤不是異常
在Java中把異常當作物件來處理,並且定義了一個基類java.lang.Throwable
作為所有異常的超類
在Java API中已經定義了許多異常類,這些異常類分為兩大類,錯誤Error和異常Exception
public class Demo02 { public static void main(String[] args) { try { System.out.println(10 / 0); }catch (ArithmeticException e){ System.out.println("丟擲異常!"); System.out.println(e.getMessage()); e.printStackTrace(); // 列印錯誤的棧資訊 }finally { System.out.println("finally語句塊一般用於釋放佔用的資源"); } } }
使用Throwable
捕獲所有異常或錯誤
可以使用多層catch捕獲遺漏的異常
public class Demo02 { public static void main(String[] args) { try { //System.out.println(10 / 0); int[] a = new int[10]; a[10] = 1; }catch (ArithmeticException e){ // 捕獲算術異常 System.out.println("丟擲異常!"); System.out.println(e.getMessage()); e.printStackTrace(); // 列印錯誤的棧資訊 }catch (Exception e){ // 捕獲所有異常,用於捕獲遺漏的異常 System.out.println(e); }finally { System.out.println("finally"); } } }
自定義異常
除了可以使用Java異常類中自帶的異常,也可以繼承Exception
類自定義一個異常
自定義異常
public class MyException extends Exception{ private int detail; public MyException(int a) { this.detail = a; } @Override public String toString() { return "MyException{" + "detail=" + detail + '}'; } }
測試類
public class Demo03 {
public static void main(String[] args) {
try{
demo03(11); // 修改這裡的引數為小於等於10的數,則不會丟擲異常
}catch (MyException e){
System.out.println("MyException=>" + e);
}
}
static void demo03(int a) throws MyException{
System.out.println("傳遞的引數為:" + a);
// 如果a > 10則丟擲異常,否則不丟擲
if (a > 10) {
throw new MyException(a);
}
System.out.println("OK");
}
}