異常)總結


異常掌握幾點:

1,  異常的思想:

將問題封裝成對象的思想。

2,  異常的處理方式。

編譯時異常:在函數上要聲明,然後要麼拋出,要麼try。

什麼時間try,什麼時間拋throws?

異常你能處理的就try

異常你不能處理的就拋throws。

編譯異常發生,只要沒有處理,都要聲明。

運行時異常:可以不用聲明,可以直接拋出。

3,  拋出多異常,並多catch處理的原則

父類異常往後放。

4,  編譯時檢測異常和運行時異常

編譯時異常:編譯時期被檢查到的異常,是可以預防修改的異常。

運行時異常:編譯時期不被檢查,運行時期發生的異常,一般這種異常都是調用者傳遞錯誤參數導致的,所以對於這種情況,應該讓程序停止。

5,  自定義異常

自定義編譯時異常:繼承Exception或其子類。

自定義運行時異常:繼承RuntimeException或其子類

可以調用父類構造方法指定異常拋出的信息:例如:

ZiException ( String  message)

{

        Super( message );

}

6,  Throws和throw的區別

Throws:後跟異常名稱,聲明異常。

Throw :後跟異常對象,拋出異常並結束函數

 

7,  異常的封裝和轉換

封裝:將異常封裝成一個對象,便於處理。

轉換:將一些調用者不需要知道或者無法處理的異常在方法體中進行捕獲、處理後,throw拋出且告知調用者一個他應該或者可以處理的異常。

8,  finally的作用,try,catch,finally的組合形式

finally的作用:捕獲異常後,不管怎樣,都必須執行finally中的代碼。在結束代語句return前執行。

1,try{} catch(){}finally{} // 不需要聲明

2,try{} catch(){} // 不需要聲明

3,try{} finally{}  // 需要聲明。  作用:不處理異常,關閉資源。

9,  異常在覆蓋時的細節

1,父類方法中拋出了一個異常,那麼覆蓋子類方法中只能拋出父類拋出的異常或者其子異常

2,如果父類方法中拋出了多個異常,那麼覆蓋子類方法只能拋出父類異常的子類異常

3,父類方法中沒有拋出異常,子類覆蓋方法不能拋出異常。

Exception

       1,RuntimeException:其以及其子類都是運行時異常。

       2,Exception其他的子類都是編譯時檢測異常。

 

如果函數上表示了異常,調用者一定要進行處理,要麼try,要麼throws,否則編譯失敗。

 

檢測異常:必須聲明,並要給出處理方式。

運行時異常:不需給出處理方式,因爲這種異常會導致算術失敗,無法繼續,只能讓程序停止,讓調用者修改代碼。不需要聲明。將其拋出即可。

函數內部出現運行時異常時,只需對函數內部處理即可(結束程序),不用在函數上將其拋出。

 

函數上拋出了幾個異常,調用者就要處理幾個異常。

 

getMessage():獲取異常信息。

toString()    :獲取異常的名稱和異常的信息。

printStackTrace():打印信息,名稱,位置到控制檯。還可以存儲到文件中(jvm的默認異常處理機制就是調用產生異常對象的printStackTrace方法)


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