----------- android培訓、java培訓、java學習型技術博客、期待與您交流! ------------
異常:通過面向對象的方式將對問題的描述信息進行封裝,封裝成對異常類。
異常體系:
Throwable
|--Error (錯誤)
|--Exception (異常)
|--RuntimeException(運行時異常)
體系特點:所有Throwable的子類都具有可拋性
拋出關鍵字:
throw和throws
throw在函數體中跑出異常
throws在函數上拋出異常類,可以多拋,中間用逗號隔開(即在函數上聲明)
除了RuntimeException及其子類異常可以在函數內拋出,不進行try處理的情況下也可以不在函數上聲明
其他的在函數內拋出不進行try處理的話,就必須在函數上聲明,否則就會編譯報錯
如果一個函數聲明瞭異常,函數的調用者需要進行處理,可以throws或try(這是處理異常的方式)
異常分兩種:
編譯時被檢測異常(不按照異常規則辦事)
該異常編譯時未處理的話,編譯時就會失敗
如果該異常被標示,代表可以被處理
運行時異常(編譯時不檢測)
如果發生該異常,建議不處理,讓程序停止執行,需要修正代碼
常見異常處理格式:
1.
try
{ }
catch
{ }
注:此處可以有多個catch,父類的catch放到最下面 若捕獲到的異常處理不了可以繼續拋出,即catch的大括號中還可throw 異常對象
2.
try
{ }
catch
{ }
finaly
{ }
3.
try
{ }
finaly
{ }
除非finally之前有System.exit(0); finally之後的大括號內的內容總是被執行
自定義異常:就是繼承Exception或RuntimeException,成爲其子類即可,具體繼承那個要看異常的類型,調用者不能處理的繼承RuntimeException。
重寫(覆蓋)中的異常:
記住一點即可,子類中不能出現“新型”的異常,這樣父類的引用指向子類的對象時會出現問題,
所以子類方法中拋出的異常必須是父類異常的子類或其本身,
若父類中拋出多個異常,子類拋出的異常只能是父類的 子集!