JAVA學習筆記(11)Object類,異常

  • 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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章