1、異常
(1)程序出現的不正常的狀況。
(2)異常的體系
Throwable
|--Error 嚴重問題,咱們不處理。
|--Exception
|--RuntimeException 運行期異常,咱們須要修正代碼
|--非RuntimeException 編譯期異常,必須處理的,不然程序編譯不經過
(3)異常的處理:
A:JVM的默認處理
把異常的名稱,緣由,位置等信息輸出在控制檯,可是呢程序不能繼續執行了。
B:本身處理
a:try...catch...finally
本身編寫處理代碼,後面的程序能夠繼續執行
b:throws
把本身處理不了的,在方法上聲明,告訴調用者,這裏有問題
(4)面試題
A:編譯期異常和運行期異常的區別?
編譯期異常 必需要處理的,不然編譯不經過
運行期異常 能夠不處理,也能夠處理
B:throw和throws是的區別
throw:
在方法體中,後面跟的是異常對象名,而且只能是一個
throw拋出的是一個異常對象,說明這裏確定有一個異常產生了
throws:
在方法聲明上,後面跟的是異常的類名,能夠是多個
throws是聲明方法有異常,是一種可能性,這個異常並不必定會產生
(5)finally關鍵字及其面試題
A:finally用於釋放資源,它的代碼永遠會執行。特殊狀況:在執行到finally以前jvm退出了
B:面試題
a:final,finally,finalize的區別?
b:若是在catch裏面有return,請問finally還執行嗎?若是執行,在return前仍是後
會,前。
C:異常處理的變形
try...catch...finally
try...catch...
try...catch...catch...
try...catch...catch...fianlly
try...finally
(6)自定義異常
繼承自Exception或者RuntimeException,只須要提供無參構造和一個帶參構造便可
(7)異常的注意實現
A:父的方法有異常拋出,子的重寫方法在拋出異常的時候必需要小於等於父的異常
B:父的方法沒有異常拋出,子的重寫方法不能有異常拋出
C:父的方法拋出多個異常,子的重寫方法必須比父少或者小面試