詳解Java的內置異常和創立自界說異常子類的辦法。本站提示廣大學習愛好者:(詳解Java的內置異常和創立自界說異常子類的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Java的內置異常和創立自界說異常子類的辦法正文
內置異常子類
在尺度包java.lang中,Java界說了若干個異常類。後面的例子曾用到個中一些。這些異常普通是尺度類RuntimeException的子類。由於java.lang現實上被一切的Java法式引入,多半從RuntimeException派生的異常都主動可用。並且,它們不須要被包括在任何辦法的throws列表中。Java說話中,這被叫做未經檢討的異常(unchecked exceptions )。由於編譯器不檢討它來看一個辦法能否處置或拋出了這些異常。 java.lang中界說的未經檢討的異常列於表1。表2列出了由 java.lang界說的必需在辦法的throws列表中包含的異常,假如這些辦法能發生個中的某個異常然則不克不及本身處置它。這些叫做受檢討的異常(checked exceptions)。Java界說了幾種與分歧類庫相干的其他的異常類型。
表1:Java 的 java.lang 中界說的未檢討異常子類
表2:java.lang 中界說的檢討異常
應用Java創立本身的異常子類
雖然Java的內置異常處置年夜多半罕見毛病,你或許願望樹立你本身的異常類型來處置你所運用的特別情形。這長短常簡略的:只需界說Exception的一個子類便可以了(Exception固然是Throwable的一個子類)。你的子類不須要現實履行甚麼——它們在類型體系中的存在許可你把它們當做異常應用。
Exception類本身沒有界說任何辦法。固然,它繼續了Throwable供給的一些辦法。是以,一切異常,包含你創立的,都可以取得Throwable界說的辦法。這些辦法顯示在表3中。你還可以在你創立的異常類中籠罩一個或多個如許的辦法。
表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。該子類異常簡略:它只含有一個結構函數和一個重載的顯示異常值的toString( )辦法。ExceptionDemo類界說了一個compute( )辦法。該辦法拋出一個MyException對象。當compute( )的整型參數比10年夜時該異常被激發。
main( )辦法為MyException設立了一個異常處置法式,然後用一個正當的值和不正當的值挪用compute( )來顯示履行經由代碼的分歧途徑。上面是成果:
Called compute(1) Normal exit Called compute(20) Caught MyException[20]