黑馬程序員_Java基礎[22]_異常總結

---------- android培訓 java培訓、期待與您交流! ----------

【不要問我爲什麼噹噹,突然21變22了。沒有跳過,因爲。。。前面。。】



【【【異常-總結】】】

異常:
異常是什麼,是對問題的描述,將問題進行對象的封裝。
----------------------------------------------------------------------------
異常【體系】:
    Throwable
        |--Error
        |--Exception
            |--RuntimeException

異常提示的【特點】:
    異常體系中的所有類以及建立的對象都具備可拋性
    也就是說可以被throw和throws關鍵字所操作
    只有異常體系具備這個特點
----------------------------------------------------------------------------
【throws】和【throws】用法:
throws定義在函數內部,用於拋出異常對象
throws定義在函數上,    用於拋出異常類可以拋出多個,用逗號隔開。

當函數內容throw拋出異常對象,並未進行try處理,必須在函數上聲明,否則編譯失敗。
注意,RuntimeException 異常除外,也就是說,如果函數內拋出的是RuntimeException異常,函數上可以不用聲明

----------------------------------------------------------------------------
如果函數聲明瞭異常,調用者需要進行處理,處理方法可以throws可以try

【異常有兩種】:
    編譯時被檢測異常
        該異常在編譯時,如果沒有處理(沒有拋,也沒有try)那麼編譯失敗
        該異常被表示,代表這可以被處理

    運行時異常(編譯時不檢測)
        在編譯時,不需要處理,編譯器不檢查
        該異常的發生,建議不處理,讓程序停止,需要對代碼進行修正。


----------------------------------------------------------------------------
異常處理的【語句】:
tyr
{
    需要被檢測的代碼;
}
cath()
{
    處理異常的代碼;
}
finally
{
    一定會執行的代碼;
}
有三種結合方式:
1,try{}catch(){}
2, try{}catch(){}finally{}
3, try{}finally{}

注意:
1、finally 中定義的通常是關閉資源代碼,因爲資源必須釋放,,比如關閉數據庫
    finally{} 是一定會被執行的,問:什麼情況不執行:
2、finally{只有一種情況不會執行,當執行到System.exit(0);的時候。(系統jvm退出)
----------------------------------------------------------------------------

【自定義異常】
定義類,繼承Exception 或者RuntimeException
    1、爲了該自定義類具備可拋性
    2、讓該類具備操作異常的共性方法。

    當要定義自定義異常信息時,可以使用父類已經定義好的功能
    將異常信息傳遞給父類的構造函數
    class MyException extends Exception
    {
        MyException(String message)
        {
            super(message);    
        }

    }


自定義異常:是按照java的面向對象思想程序中出現的特有問題進行封裝。


----------------------------------------------------------------------------
異常的好處:
    1、講問題進行封裝。
    2、將正常流程代碼和問題處理代碼相分離。方便閱讀。


異常的處理原則:

    1、處理方式有兩種: try  和  hrows
    2、調用出拋出異常的功能時候,拋出幾個,就處理幾個。
        一個try 對應多個catch
    3、多個catch,父類的catch往下放到最下面
    4、catch內  需要定義針對性的處理方式,不要簡單的定義printStackTrace;也不要不寫。
        當捕獲到的異常,本功能處理不了時,可以繼續在catch中拋出。
        try
        {
            throw new AException();
        }
        cath(AException e)
        {
            throw e;//處理不了,就拋出去
        }
        如果該異常處理不了,但並不屬於該功能出現的異常,
        可以將異常轉換後,拋出和該功能相關的異常


        或者異常可以處理,當需要異常產生的和本功能相關的問題提供出去
        當調用者知道,並處理,也可以將捕獲的異常處理後,轉換新的異常

        try
        {
            throw new AException();
        }
        cath(AException e)
        {
            //對 AException  的處理
            throw BException;//拋出 相關的異常
        }

比如之前舉例說老師上課電腦冒煙了情況,電腦出問題了,把事情報告給校辦,
            是換老師還是換電腦,處理好後,拋出處理就性了。
           再比如,匯款不成功的例子)


異常的注意事項:
    在父類覆蓋時:
    1、子類拋出的異常必須是父類的異常的子類或者子集。
    2、如果父類,或者接口沒有異常拋出時,子類覆蓋出現異常,只能try不能拋原因就是子類的異常只能是父類中有的不能多
參閱:

老師用電腦上課
圖形面積


--------------------------------------------------------------------------------------------------------------------------------------------------------








   



---------- android培訓、 java培訓、期待與您交流!----------
黑馬官網: http://edu.csdn.net/heima
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章