天天看點

Java千百問_04異常處理(006)_常見的Java異常有哪些(運作時)

我們所說的常見異常是指jdk或者其他常用第三方jar中,出現頻次很高的異常。常見的運作時異常(runtimeexception)包括:

空指針異常類:nullpointerexception

數組下标越界異常:arrayindexoutofboundsexception

數組負長度異常:negativearraysizeexception

數組存儲異常:arraystoreexception

算術異常類:arithmeticexception

非法參數異常:illegalargumentexception

類型強制轉換異常:classcastexception

枚舉常量不存在異常:enumconstantnotpresentexception

數字轉換異常:numberformatexception

無效的狀态異常:illegalstateexception

無效的監控狀态異常:illegalmonitorstateexception

無效的線程狀态異常:illegalthreadstateexception

1.java.lang.nullpointerexception

這個異常大家肯定都經常遇到,異常的解釋是:程式遇上了空指針。簡單地說就是調用了未經初始化的對象或者是不存在的對象。

這個錯誤經常出現在操作方法傳回值、調用數組這些操作中等等。

一般在調用他人有可能傳回null的方法時,對null進行了後續操作,會抛出該異常,這裡應該首先進行null判斷然後再進行後續操作。

對數組操作中出現空指針,很多情況下是一些剛開始學習程式設計的朋友常犯的錯誤,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組配置設定需要的空間,而初始化後的數組,其中的元素并沒有執行個體化,依然是空的,是以還需要對每個元素都進行初始化(如果要調用的話)

2.java.lang.arrayindexoutofboundsexception

這個異常相信很多朋友也經常遇到過,異常的解釋是:數組下标越界(這裡的數組包括各類集合,如list等)。

現在程式中大多都有對數組的操作,是以在調用數組的時候一定要認真檢查,看調用的下标是不是超出了數組的範圍。再通過下标擷取數組值之前,最好先檢視一下數組的length,以免出現這個異常。

另外,如果傳入的下标為負數,也會出現這個異常。

3.java.lang.negativearraysizeexception

該異常的解釋是:數組長度為負值異常。

當使用負數作為數組長度建立數組時抛出該異常。

在建立數組之前,一定要確定數組長度非負,尤其是隐式建立(數組長度為變量)。

4.java.lang.arraystoreexception

該異常的解釋是:數組存儲異常。

當向數組中存放非數組聲明類型對象時抛出。

在為數組指派時,一定要注意類型的一緻。

5.java.lang.arithmeticexception

該異常的解釋是:數學運算異常。

比如程式中出現了除以零這樣的運算就會出這樣的異常。對這種異常,大家隻要好好檢查一下自己程式中涉及到數學運算的地方,就能夠解決。

6.java.lang.illegalargumentexception

該異常的解釋是:非法參數異常。

很多java或者第三方類庫中的方法在某情況下都會引發這樣的錯誤。比如g.setcolor(int red,int green,int blue)這個方法中的三個值,如果有超過255的則會出現這個異常。一旦發現這個異常,我們要趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。

7.java.lang.classcastexception

該異常的解釋是:強制類型轉換異常。

假設有類a和b(a不是b的父類或子類),o是a的執行個體,那麼當強制将o構造為類b的執行個體時抛出該異常。

一般會在類型強制轉換時出現,我們一定要梳理好繼承關系采取強轉即可避免。

8.java.lang.enumconstantnotpresentexception

該異常的解釋是:枚舉常量不存在異常。

當應用試圖通過名稱和枚舉類型通路一個枚舉對象,但該枚舉對象并不包含常量時,抛出該異常。

定義和使用枚舉類型時需要小心。

9.java.lang.numberformatexception

該異常的解釋是:數字轉換異常。該異常繼承于illegalargumentexception。

當将字元串轉換為數字時,若格式錯誤則轉換失敗,抛出該異常。例如将"abc"抓換為整型即會抛出該異常。

我們在做數字轉換時一定要注意。

10.java.lang.illegalstateexception

該異常的解釋是:無效的狀态異常。

當在java環境和應用尚未處于某個方法的合法調用狀态,而調用了該方法時,抛出該異常。

例如在程式中兩次調用了response.sendredirect()方法,就會抛出該異常。

11.java.lang.illegalmonitorstateexception

該異常的解釋是:無效的監控狀态異常。

當某個線程試圖等待一個自己并不擁有的對象(o)的監控器或者通知其他線程等待該對象(o)的監控器時,抛出該異常。

異常的發生是由于程式員沒有注意notify(),notify(),wait()方法的使用條件,沒有真正了解線程同步機制。如果目前的線程不是此對象鎖的所有者,卻調用該對象的notify(),notify(),wait()方法時抛出該異常。

12.java.lang.illegalthreadstateexception

該異常的解釋是:無效的線程狀态異常。該異常繼承于illegalargumentexception。

當線程尚未處于某個方法的合法調用狀态,而調用了該方法時,抛出異常。

當對一個已經死亡的線程調用start,sleep之類的操作,會抛出該異常。

原文位址:http://blog.csdn.net/ooppookid/article/details/51112765