我們所說的常見異常是指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