Java-異常總結

來源:互聯網
上載者:User

標籤: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-異常總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.