java.lang.StackOverflowError
堆疊溢出 => 例如 recursion終止條件沒寫好java.lang.OutOfMemoryError
堆積溢出 => 例如 Integer[] arr = new Integer[1024*1024*1024];
請看以下error/ exception 架構圖進行了解:
java.lang.Throwable
java.lang.Error
: 一般不編寫針對性的程式進行處理java.lang.Exception
: 可以進行例外的處理
IOExpetion
FileNotFoundException
ClassNotFoundException
NullPointerException
ArrayIndexOutBoundsException
StringIndexOutBoundsException
ClassCastException
NumberFormatException
InputMismatchException
ArithmeticException
方式一、try-catch-finally
狼來了,自己把狼驅走,保護好羊群
能夠處理 compile 時期的例外,run 時期仍可能出現例外,相當於延遲例外情況到執行的時候才可能會出現;通常我們在開發時一定是先處理編譯時例外,執行時例外視情況處理
方式二、throws + 例外類型
狼來了,自己趕快大喊,捕狼人來幫幫忙哦~ (自己沒辦法保護好羊群)
拋給方法的調用者去處理
使用 throw
關鍵字
class Student {
private int id;
public void register(int id) throws Exception {
if (id > 0) {
this.id = id;
} else {
// 手動拋出例外物件
throw new RuntimeException("您輸入的學號是不合規範的");
}
}
}
本文介紹
1.Error/Exception 架構 父子層 關係
因此我們在需要捕獲多個例外時,若例外類別之間彼此有父子類關係,就先寫子類、再寫父類
2.例外處理的兩種方式
3.視業務邏輯使用 throw 關鍵字拋出例外物件並輸出自定義訊息