-
Object:所有類的根類。
-
Object是不斷抽取而來的,具備着所有對象都具備的共性內容。
-
equals方法
-
比較的是地址值
-
equals 方法覆蓋
-
-
hashCode
-
getClass 返回該對象運行時類
-
toString 返回該對象的字符串表示
-
異常:
-
異常:是在運行時期發生的不正常情況。
-
在java中用類的形式對不正常情況進行描述和封裝對象。描述不正常情況的類,就稱爲異常類。
-
以前正常流程代碼和問題處理代碼相結合,現在將正常流程代碼和問題處理代碼分離。提高閱讀性。
-
其實異常就是java通過面向對象的思想將問題封裝成了對象,用異常類對其進行描述。
-
不同的問題用不同的類進行具體的描述。比如角標越界,空指針等等。
-
問題很多,意味着描述的類也很多,將其共性進行向上抽取,形成了異常體系。
-
最終問題(不正常情況)就分成了兩大類
-
Throwable:無論是error還是異常,問題,問題發生就可以拋出,讓調用者知道並處理。 可拋出 (父類)
-
該體系的特點就在於Throwable及其所有的子類都具有可拋性。
-
可拋性到底指的是什麼呢?怎麼體現可拋性呢?
-
其實是通過兩個關鍵字來體現的。
-
throws throw 凡是可以被這兩個關鍵字所操作的類和對象都具備可拋性。
-
一般不可處理的。Error
-
特點:是由jvm拋出的嚴重性的問題。
-
這種問題發生一般不針對性處理。直接修改程序。
-
可處理的。Exception
-
該體系的特點:
-
子類的後綴名都是用其父類名作爲後綴,閱讀性很強。
-
throw 異常對象的拋出
-
-
對於角標是整數不存在,可以用角標越界來表示,
-
對於負數爲角標的情況,準備用負數角標異常來表示。
-
負數角標這種異常在java中並沒有定義過。
-
那就按照java異常的創建思想,面向對象,將負數角標進行自定義描述。並封裝成對象。
-
這種自定義的問題描述稱爲自定義異常。
-
注意:如果一個類稱爲異常類,必須要繼承異常體系,因爲只有稱爲異常體系的子類纔有資格具備可拋性。
-
纔可以被兩個關鍵字所操作。throws throw
-
自定義異常:
-
異常的分類:
-
編譯時被檢測異常:只要是Exception和其子類都是,除了特殊子類RuntimeException體系。
-
這種問題一旦出現,希望在編譯時就進行檢測,讓這種問題有對應的處理方式。這樣的問題都可以針對性的處理。
-
編譯時不檢測異常(運行時異常)就是Exception中的RuntimeException何其子類。
-
這種問題的發生,無法讓功能繼續,運算無法進行,更多是因爲調用者的原因導致的或者引發了內部狀態的改變導致的。
-
這種問題一般不處理,直接編譯通過,在運行時,讓調用者調用的程序強制停止,讓調用者對代碼進行修正。
-
所以自定義異常時,要麼繼承Exception要麼繼承RuntimeException。
-
throws和throw的區別
-
throws使用在函數上。
-
throw使用在函數內。
-
throws拋出的是異常類,可以拋出多個,用逗號隔開。
-
throw 拋出的是異常對象。
-
異常捕捉:
-
異常處理的捕捉形式:這是可以對異常進行針對性處理的方式。
-
具體格式是:
-
try
-
{ //需要被檢測異常的代碼。
-
}
-
catch(異常類 變量)//該變量用於接收發生的異常對象
-
{//處理異常的代碼。
-
}
-
finally
-
{//一定會被執行的代碼。
-
}
-
多catch父類的catch放在最下面。否則編譯失敗。
-
異常處理原則:
-
函數內容如果拋出需要檢測的異常,那麼函數上必須要聲明。否則必須在函數內用 try catch捕捉,否則編譯失敗。
-
如果調用到了聲明異常的函數,要麼try catch要麼throws。否則編譯失敗。
-
什麼時候try,什麼時候throws
-
功能內容可以解決用catch,解決不了用throws告訴調用者,由調用者解決。
-
一個功能如果拋出了多個異常,那麼調用時,必須要對應多個catch進行針對性的處理。
-
內部有幾個需要檢測的異常,就拋幾個異常,拋出幾個,就catch幾個。
-
finally 代碼塊 一定會被執行到的代碼
-
finally通常用於關閉(釋放)資源。
-
try catch finally 代碼塊組合特點:
-
1 try catch finally
-
2 try catch(多個)當沒有必要資源需要釋放時,可以不用定義finally。
-
3 try finally(沒有catch就沒有處理)
-
異常應用:
-
異常的注意事項:
-
1 子類在覆蓋父類方法時,父類的方法如果拋出了異常,那麼子類的方法只能拋出父類的異常或者該異常的子類。
-
2如果父類拋出多個異常,那麼子類只能拋出父類異常的子集。
-
簡單說:子類覆蓋父類只能拋出父類的異常或者子類或者子集。
-
注意:如果父類的方法沒有拋出異常,那麼子類覆蓋時絕對不能拋,就只能try。
JAVA學習筆記(11)Object類,異常
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.