Java基礎-知識點總結-Java異常

Java異常

 

異常處理

 

     異常是在程序執行過程中任何中斷正常程序流程的異常條件。Java異常是一個描述在代碼段中發生異常情況的對象,Java講異常抽象爲一系列的類,用來描述不同錯誤情況下的詳細信息。當一類異常情況發生時,一個表示該異常的對象被JVM創建,並在方法中拋出(throw),然後在方法內部,程序員可以自己選擇處理該異常,或者把異常直接拋出去,讓方法的調用者來處理此異常。

 

 異常體系

 

    Throwable

 

       |---Erroe

 

       |---Exception

 

                    |---RuntimeException

 

    Java把異常當做對象來處理,並定義一個基類java.lang.Throwable作爲所有異常的超類。在Java API中,已經定義了許多異常類,這些異常類範圍兩大類,歸屬於Throwable:

 

  錯誤(Erroe)和異常(Exception)。

 

    Error類定義了在通常環境下不希望被程序捕獲的異常,表示系統錯誤比較嚴重無法恢復的情況。在Java中,運行時異常和Error異常又被稱爲不可控異常,及用戶程序都不需要去處理的異常。

 

    Exception類定義了由應用程序拋出的異常,這些異常是可以被用戶程序捕獲的。Exception異常分爲:運行時異常(RuntimeException)和預期異常(CheckedException)。運行時異常是任何屬於RuntimeException的子類的異常,是程序運行中,由於程序的一些代碼存在缺陷(bug),導致程序終止,無法繼續運行。運行時異常通常無法恢復,所以程序不用處理此類異常,一般做法是在異常產生時,根據錯誤信息找到錯的程序代碼,然後進行代碼修復。預期異常是能被Java編譯器分析的異常,方法調用者通過代碼的檢測與處理,可以對其進行恢復。在Java異常體系中,預期異常是程序必須處理的,否則就會出現編譯錯誤。

 

異常處理語句

 

    try{

 

需要被檢測的代碼

 

}catch{

 

    處理異常的代碼

 

}finally{                         //finally中定義的通常是關閉資源的代碼,

 

    一定會執行的代碼     //finally只有一種情況不會被執行:System.exit(0)

 

}

 

    try/catch/finally有三種結合方式:

 

    1、try{

 

}catch{

 

}

 

    2、try{

 

       }finally{

 

       }

 

    3、try{

 

         }catch{

 

       }finally{

 

       }

 

    其中可以使用多個catch子句來處理一段代碼可能會引發的多個異常,但是應把父類異常放到最後。

 

Throw和throws的用法

 

    Throw定義在方法體內,用於拋出異常對象,當方法中有throw拋出異常對象時,且並未進行try處理,則必須在方法聲明處使用throws關鍵字指明拋出的異常,否則編譯失敗。注意如果方法中出現的是RuntimeException異常,則不需要指明。

 

    Throws定義在方法聲明處,用於拋出異常類,可以同時拋出多個,用逗號隔開

 

自定義異常

 

     在Java異常類中,儘管定義了大多數常見錯誤,但有的時候,程序要建立自己的異常類型來處理特定的應用場景,這就需要程序自己定義一個新的異常。自定義異常類只需要繼承Exception類或它的一個子類,根據需要實現不同的構造方法就可以了。

 

      Class MyException extends Exception{

 

              MyException(Stringmessage){

 

               Super(massage);

 

           }

 

}      

 

 異常方法的覆蓋

 

     Java繼承中,子類可以覆蓋父類的方法,如果父類方法拋出異常,那麼子類方法覆蓋父類方法時需要注意:

 

  1. 子類方法可以聲明拋出和父類相同的異常;

  2. 子類方法可以聲明拋出父類方法異常的子類;

  3. 子類方法可以不拋出任何異常,但必須使用try/catch處理異常

  4. 子類方法不能跑出其他異常

發佈了37 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章