RuntimeException与CheckedException
RuntimeException與CheckedException
?
Java的異常被分為兩大類(lèi):Checked異常和Runtime異常(運(yùn)行時(shí)異常)。所有RuntimeException類(lèi)及其子類(lèi)實(shí)例被稱(chēng)為Runtime異常;不是RuntimeException類(lèi)及其子類(lèi)的異常實(shí)例則稱(chēng)為Checked異常。
?
只有Java語(yǔ)言提供了Checked異常,其他語(yǔ)言都沒(méi)有提供Checked異常。Java認(rèn)為Checked異常都是可以被處理(修復(fù))的異常,所以Java程序必須顯式處理Checked異常。
?????? 對(duì)于Checked異常的處理方式有兩種:
(1)當(dāng)前方法明確知道如何處理該異常,程序應(yīng)該使用try...catch塊來(lái)捕獲該異常,然后對(duì)應(yīng)的catch塊中修補(bǔ)該異常。
(2)當(dāng)前方法不知道如何處理這種異常,應(yīng)該在定義該方法時(shí)聲明拋出該異常。
?????? Runtime異常則更加靈活,Runtime異常無(wú)須顯式聲明拋出,如果程序需要捕捉Runtime異常,也可以使用try...catch塊來(lái)捕捉Runtime異常。
?
?當(dāng)使用throw語(yǔ)句自行拋出異常,如果throw語(yǔ)句拋出的異常是Checked異常,則該throw語(yǔ)句要么處于try塊里,顯式捕獲該異常,要么放在一個(gè)帶throws聲明的方法中,即把該異常交給該方法的調(diào)用者處理;也就是說(shuō)當(dāng)出現(xiàn)了(不管是自行拋出的,還是系統(tǒng)拋出的)Checked異常,就要想辦法去處理它,不能不理會(huì)它,要么顯式地在try...catch塊里捕獲,處理它;要么把它放在一個(gè)帶throws聲明的方法中,把異常交給該方法的調(diào)用者處理。
?????? 如果throw語(yǔ)句拋出的異常是Runtime異常,則該語(yǔ)句無(wú)須放在try塊里,也無(wú)須放在帶throws聲明拋出的方法中;程序既可以顯式使用try...catch來(lái)捕獲,并處理異常,也可以完全不處理該異常,把異常交給該方法調(diào)用者處理。(http://blog.163.com/quanquan127@126/blog/static/6884772520126394334182/)
?
ArithmeticException(除數(shù)為0的異常), BufferOverflowException(緩沖區(qū)上溢異常), BufferUnderflowException(緩沖區(qū)下溢異常), IndexOutOfBoundsException(出界異常), NullPointerException(空指針異常), EmptyStackException(空棧異常), IllegalArgumentException(不合法的參數(shù)異常), NegativeArraySizeException, NoSuchElementException, SecurityException, SystemException, UndeclaredThrowableException
1. java.lang.NullPointerException
異常的解釋是"程序遇上了空指針",簡(jiǎn)單地說(shuō)就是調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象,即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來(lái)了。數(shù)組的初始化是對(duì)數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒(méi)有實(shí)例化,依然是空的,所以還需要對(duì)每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話(huà))
2. java.lang.ClassNotFoundException 異常的解釋是"指定的類(lèi)不存在"。
3. java.lang.ArithmeticException 這個(gè)異常的解釋是"數(shù)學(xué)運(yùn)算異常",比如程序中出現(xiàn)了除以零這樣的運(yùn)算就會(huì)出這樣的異常。
4. java.lang.ArrayIndexOutOfBoundsException
異常的解釋是"數(shù)組下標(biāo)越界",現(xiàn)在程序中大多都有對(duì)數(shù)組的操作,因此在調(diào)用數(shù)組的時(shí)候一定要認(rèn)真檢查,看自己調(diào)用的下標(biāo)是不是超出了數(shù)組的范圍,一般來(lái)說(shuō),顯示(即直接用常數(shù)當(dāng)下標(biāo))調(diào)用不太容易出這樣的錯(cuò),但隱式(即用變量表示下標(biāo))調(diào)用就經(jīng)常出錯(cuò)了,還有一種情況,是程序中定義的數(shù)組的長(zhǎng)度是通過(guò)某些特定方法決定的,不是事先聲明的,這個(gè)時(shí)候,最好先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常。
5. java.lang.IllegalArgumentException
這個(gè)異常的解釋是"方法的參數(shù)錯(cuò)誤",比如g.setColor(int red,int green,int blue)這個(gè)方法中的三個(gè)值,如果有超過(guò)255的也會(huì)出現(xiàn)這個(gè)異常,因此一旦發(fā)現(xiàn)這個(gè)異常,我們要做的,就是趕緊去檢查一下方法調(diào)用中的參數(shù)傳遞是不是出現(xiàn)了錯(cuò)誤。
6. java.lang.IllegalAccessException
這個(gè)異常的解釋是"沒(méi)有訪(fǎng)問(wèn)權(quán)限",當(dāng)應(yīng)用程序要調(diào)用一個(gè)類(lèi),但當(dāng)前的方法即沒(méi)有對(duì)該類(lèi)的訪(fǎng)問(wèn)權(quán)限便會(huì)出現(xiàn)這個(gè)異常。對(duì)程序中用了Package的情況下要注意這個(gè)異常(http://www.cnblogs.com/qinqinmeiren/archive/2010/10/14/2151702.html)
轉(zhuǎn)載于:https://www.cnblogs.com/HiJacky/p/5743966.html
總結(jié)
以上是生活随笔為你收集整理的RuntimeException与CheckedException的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 动画机制与使用技巧
- 下一篇: eclipse报错:Failed to