詳解Java的內(nèi)置異常以及創(chuàng)建自定義異常子類的方法
內(nèi)置異常子類
在標準包java.lang中,Java定義了若干個異常類。前面的例子曾用到其中一些。這些異常一般是標準類RuntimeException的子類。因為java.lang實際上被所有的Java程序引入,多數(shù)從RuntimeException派生的異常都自動可用。而且,它們不需要被包含在任何方法的throws列表中。Java語言中,這被叫做未經(jīng)檢查的異常(unchecked exceptions )。因為編譯器不檢查它來看一個方法是否處理或拋出了這些異常。 java.lang中定義的未經(jīng)檢查的異常列于表1。表2列出了由 java.lang定義的必須在方法的throws列表中包括的異常,如果這些方法能產(chǎn)生其中的某個異常但是不能自己處理它。這些叫做受檢查的異常(checked exceptions)。Java定義了幾種與不同類庫相關的其他的異常類型。
表1:Java 的 java.lang 中定義的未檢查異常子類
表2:java.lang 中定義的檢查異常
使用Java創(chuàng)建自己的異常子類
盡管Java的內(nèi)置異常處理大多數(shù)常見錯誤,你也許希望建立你自己的異常類型來處理你所應用的特殊情況。這是非常簡單的:只要定義Exception的一個子類就可以了(Exception當然是Throwable的一個子類)。你的子類不需要實際執(zhí)行什么——它們在類型系統(tǒng)中的存在允許你把它們當成異常使用。
Exception類自己沒有定義任何方法。當然,它繼承了Throwable提供的一些方法。因此,所有異常,包括你創(chuàng)建的,都可以獲得Throwable定義的方法。這些方法顯示在表3中。你還可以在你創(chuàng)建的異常類中覆蓋一個或多個這樣的方法。
表3 Throwable 定義的方法
下面的例子聲明了Exception的一個新子類,然后該子類當作方法中出錯情形的信號。它重載了toString( )方法,這樣可以用println( )顯示異常的描述。
// This program creates a custom exception type. class MyException extends Exception { private int detail; MyException(int a) { detail = a; } public String toString() { return "MyException[" + detail + "]"; } } class ExceptionDemo { static void compute(int a) throws MyException { System.out.println("Called compute(" + a + ")"); if(a > 10) throw new MyException(a); System.out.println("Normal exit"); } public static void main(String args[]) { try { compute(1); compute(20); } catch (MyException e) { System.out.println("Caught " + e); } } }
該例題定義了Exception的一個子類MyException。該子類非常簡單:它只含有一個構造函數(shù)和一個重載的顯示異常值的toString( )方法。ExceptionDemo類定義了一個compute( )方法。該方法拋出一個MyException對象。當compute( )的整型參數(shù)比10大時該異常被引發(fā)。
main( )方法為MyException設立了一個異常處理程序,然后用一個合法的值和不合法的值調(diào)用compute( )來顯示執(zhí)行經(jīng)過代碼的不同路徑。下面是結(jié)果:
Called compute(1) Normal exit Called compute(20) Caught MyException[20]
相關文章
優(yōu)化spring?boot應用后6s內(nèi)啟動內(nèi)存減半
這篇文章主要為大家介紹了優(yōu)化spring?boot后應用6s內(nèi)啟動內(nèi)存減半的優(yōu)化示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪2022-02-02使用profiles進行多環(huán)境配置的代碼實現(xiàn)
在項目開發(fā)的過程中會用到多個環(huán)境,為了便于開發(fā)使用,通常需要使用profiles進行多環(huán)境配置,所以本文給大家介紹了使用profiles進行多環(huán)境配置的代碼實現(xiàn),需要的朋友可以參考下2024-02-02Spring Boot jar可執(zhí)行原理的徹底分析
這篇文章主要給大家介紹了關于Spring Boot jar可執(zhí)行原理的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-07-07