標籤:java 異常
Java-異常總結
一 異常的定義
1,異常:是對問題的描述,將問題進行對象的封裝
2,異常的體系:
Throwable
|–Error
|–Exception
|–RuntimeException
3,異常體系的特點:
異常體系中的所有的類以及建立的對象都具備可拋性,也就是說可以被throw和throws關鍵字操作,只有異常體系才具備這個特點
throw定義在函數內部,用於拋出異常對象
throws定義在函數上,用於拋出異常類,可以拋出多個異常類,中間用逗號隔開
當函數內容有throw拋出異常對象的時候,並未進行try處理,必須要在函數上聲明,否則編譯失敗
但是RuntimeException除外,就是說,函數內部如果拋出的是RuntimeException異常,不用在函數上聲明
如果函式宣告了異常,調用者需要進行處理,處理方法可以是throw可以是try
4,異常有兩種:
編譯時間被檢測異常:
該異常在編譯的時候,如果沒有處理(沒有拋出,也沒有try),編譯失敗
該異常被標示,代表著可以被處理
運行時異常(編譯時間不檢測):
在編譯的時候,不需要處理,編譯器不檢查,一旦程式出現這種異常,程式直接結束
二 finally
finally定義的代碼塊, 定義一定執行的代碼,通常用於關閉資源
即使前面有return語句,finally語句仍然會執行,
只有System.exit(0)系統退出的時候不會執行
finally{ 一定會執行的代碼;}
有下面三種結合方式:
try{}catch(){}
try{}finally{}
try{}catch(){}finally{}
注意:
1,finally中定義的通常是關閉資源的代碼,因為開啟的資源必須釋放。
2,finally只有一種情況不會執行,當執行到System.exit(0)
三 自訂異常:
定義類繼承Exception或者RuntimeException
1,為了讓該自訂類具備可拋性
2,讓該類具備操作異常的共性方法
當要定義自訂異常的資訊時,可以使用父類已經定義好的功能
異常資訊傳遞給父類的建構函式。
class MyException extends Exception{ MyException(String p_message) { super(p_message); } }
自訂異常原則:按照java的面對對象的思想,將程式中出現的問題進行封裝
四 異常的好處:
1,將問題進行封裝。
2,將正常流程代碼和問題處理代碼相分離,方便於閱讀
五 異常的處理原則:
1,處理方式有兩種:try或者throw
2,調用到拋出異常的功能的時候,拋出幾個,就處理幾個,
一個try可以對應多個catch
3,多個catch,父類的catch放在最下面
4,catch內,需要定義針對性的處理方式,不要簡單的定義printStackTrace的輸出語句
也不可以不寫,當捕獲到的異常,本功能處理不了的時候,可以繼續在catch中拋出
try{ throw new AException();}catch (AException e){ throw e;}
如果該異常處理不了,當兵不屬於該功能出現的異常, 可將異常轉換後,在
拋出和該功能相關的異常
或者異常可以處理,當需要將異常產生的和本功能相關的問題提供出去,
讓調用者知道,並處理,也可以將捕獲異常處理後,轉換新的異常。
try{ throw new AException();}catch (AException e){ //對AException 處理 throw new BException();}
可以參考Exception.java這個類檔案
六 catch
catch是用於處理異常的,如果沒有catch就代表異常沒有被處理過
如果該異常是檢測時異常,就必須聲明
七 異常的覆蓋
1,子類在覆蓋父類的時候,如果父類的方法拋出異常,那麼子類的覆蓋方法,只能拋出父類的異常或者改異常的子類
2,如果父類的方法拋出多個異常,那麼子類在覆蓋該方法的時候,就只能拋出父類異常的子集
3,如果父類或者介面的方法中沒有異常拋出,那麼子類在覆蓋方法的時候,也不可以拋出異常
4,如果子類方法發生了異常,就必須要進行try處理,不可以拋出
著作權聲明:歡迎交流指本文章的錯誤,必定虛心接受,QQ872785786
Java-異常總結