1:異常和錯誤都是Throwable的子類
2:異常的處理方式
首先是虛擬機檢測到異常,然後創建異常對象並拋出,
然後拋給調用者,調用者沒有對應異常的處理,所以,又拋給了main方法;
main方法中也沒有處理的方法,拋給虛擬機JVM,然後虛擬機就會做兩個處理,在控制檯打印錯誤信息的位置,終止程序的運行
3:關鍵字throw
4:關鍵字throws,方法內部有異常,需要告訴外面,內部拋出什麼異常,就使用throws告訴外界什麼異常。
5:通過throw拋出異常對象之後,然後在方法聲明時通過throws告訴外界的調用者說有問題,然後在調用者main方法上也需要使用throws告訴main的調用者JVM說我自己有問題;最後虛擬機把異常信息打印在控制檯上,並終止程序的運行。
上面的處理方式也屬於一種吧,是虛擬機自己的處理方式。
6:異常的另一種處理方式
使用try,catch進行處理,然後打印出異常信息,最後控制檯執行,並執行完程序。
具體的實行過程如下,注意發生異常之後開始跳轉到catch;
7:多個catch的時候需要注意的,同一個方法中拋出的異常包含有繼承關係的異常時候,子類異常需要寫在前面;
8:關鍵字finally:之後的代碼必須執行,用於後續釋放操作系統的資源;
下面的代碼表示的是不可以執行,
9:在main方法中調用拋出異常的方法時,需要用try,catch捕獲異常,而不是自己也通過throws拋出異常,因爲如果一直這樣做的話,會導致程序終止。
10:異常分爲編譯異常和運行時異常,運行時異常在使用throw拋出時候,是不需要使用throws來聲明的。
11:空指針異常也是一種運行時異常;運行時異常都需要我們使用throw拋出異常,且在方法開始不需要使用throws聲明main方法中調用也不需要使用try catch來捕獲異常。
12“繼承中的異常,父類拋出了異常,子類可以不拋出,如果拋出的話小於等於父類拋出的異常;父類不拋出異常,子類一定不可以拋出異常,如果子類方法中調用了拋出異常的方法,那麼只能通過trycatch進行處理
13:Throwable中的三個方法
14:自定義異常