作為一隻敬業的程式設計師,就是不能接受我的程式設計出現bug!可見我們對bug是如此的深惡痛覺!它已成為我們職業生涯中的攔路虎,所以今天精心為大家總結一下Java中常見的幾種異常,望大家多多注意。
1、java.lang.NullPointerException(空指標異常) 呼叫了未經初始化的物件或者是不存在的物件。經常出現在建立圖片,呼叫陣列這些操作中,比如圖片未經初始化,或者圖片建立時的路徑錯誤等等。對陣列操作中出現空指標, 即把陣列的初始化和陣列元素的初始化混淆起來了。陣列的初始化是對陣列分配需要的空間,而初始化後的陣列,其中的元素並沒有例項化, 依然是空的,所以還需要對每個元素都進行初始化(如果要呼叫的話)。
2、 java.lang.ClassNotFoundException指定的類不存在 這裡主要考慮一下類的名稱和路徑是否正確即可,通常都是程式試圖透過字串來載入某個類時可能引發異常。比如:呼叫Class.forName();或者呼叫ClassLoad的finaSystemClass();或者LoadClass();
3、 java.lang.NumberFormatException字串轉換為數字異常 當試圖將一個String轉換為指定的數字型別,而該字串確不滿足數字型別要求的格式時,丟擲該異常.如現在講字元型的資料“123456”轉換為數值型資料時,是允許的。但是如果字元型資料中包含了非數字型的字元,如123#56,此時轉換為數值型時就會出現異常。系統就會捕捉到這個異常,並進行處理。
4、java.lang.IndexOutOfBoundsException陣列下標越界異常 檢視呼叫的陣列或者字串的下標值是不是超出了陣列的範圍,一般來說,顯示(即直接用常數當下標)呼叫不太容易出這樣的錯,但隱式(即用變量表示下標)呼叫就經常出錯了,還有一種情況,是程式中定義的陣列的長度是透過某些特定方法決定的,不是事先宣告的,這個時候先檢視一下陣列的length,以免出現這個異常。
5、java.lang.IllegalArgumentException方法的引數錯誤 比如g.setColor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法呼叫中的引數傳遞是不是出現了錯誤。
6、java.lang.IllegalAccessException沒有訪問許可權 當應用程式要呼叫一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程式中用了Package的情況下要注意這個異常。
7、java.lang.ArithmeticException數學運算異常 當算術運算中出現了除以零這樣的運算就會出這樣的異常。
8、java.lang.ClassCastException資料型別轉換異常 當試圖將對某個物件強制執行向下轉型,但該物件又不可轉換又不可轉換為其子類的例項時將引發該異常,如下列程式碼。 Object obj = new Integer(0); String str = obj;
9、 java.lang.FileNotFoundException檔案未找到異常 當程式試圖開啟一個不存在的檔案進行讀寫時將會引發該異常。該異常由FileInputStream,FileOutputStream,RandomAccessFile的構造器宣告丟擲,即使被操作的檔案存在,但是由於某些原因不可訪問,比如開啟一個只讀檔案進行寫入,這些構造方法仍然會引發異常。
10、java.lang.ArrayStoreException陣列儲存異常 當試圖將型別不相容型別的物件存入一個Object[]陣列時將引發異常,如 Object[] obj = new String[3] obj[0] = new Integer(0);
11、java.lang.NoSuchMethodException方法不存在異常 當程式試圖透過反射來建立物件,訪問(修改或讀取)某個方法,但是該方法不存在就會引發異常。
12、 java.lang.NoSuchFiledException方法不存在異常 當程式試圖透過反射來建立物件,訪問(修改或讀取)某個filed,但是該filed不存在就會引發異常。
13、 java.lang.EOFException檔案已結束異常 當程式在輸入的過程中遇到檔案或流的結尾時,引發異常。因此該異常用於檢查是否達到檔案或流的結尾
14、java.lang.InstantiationException例項化異常 當試圖透過Class的newInstance()方法建立某個類的例項,但程式無法透過該構造器來建立該物件時引發。Class物件表示一個抽象類,介面,陣列類,基本型別 。該Class表示的類沒有對應的構造器。
15、java.lang.InterruptedException被中止異常 當某個執行緒處於長時間的等待、休眠或其他暫停狀態,而此時其他的執行緒透過Thread的interrupt方法終止該執行緒時丟擲該異常。
16、java.lang.CloneNotSupportedException 不支援克隆異常 當沒有實現Cloneable介面或者不支援克隆方法時,呼叫其clone()方法則丟擲該異常。
17、java.lang.OutOfMemoryException 記憶體不足錯誤 當可用記憶體不足以讓Java虛擬機器分配給一個物件時丟擲該錯誤。
18、java.lang.NoClassDefFoundException 未找到類定義錯誤 當Java虛擬機器或者類裝載器試圖例項化某個類,而找不到該類的定義時丟擲該錯誤。 違背安全原則異常:SecturityException 操作資料庫異常:SQLException 輸入輸出異常:IOException 通訊異常:SocketException 以上便是Java常見的幾種異常。
作為一隻敬業的程式設計師,就是不能接受我的程式設計出現bug!可見我們對bug是如此的深惡痛覺!它已成為我們職業生涯中的攔路虎,所以今天精心為大家總結一下Java中常見的幾種異常,望大家多多注意。
1、java.lang.NullPointerException(空指標異常) 呼叫了未經初始化的物件或者是不存在的物件。經常出現在建立圖片,呼叫陣列這些操作中,比如圖片未經初始化,或者圖片建立時的路徑錯誤等等。對陣列操作中出現空指標, 即把陣列的初始化和陣列元素的初始化混淆起來了。陣列的初始化是對陣列分配需要的空間,而初始化後的陣列,其中的元素並沒有例項化, 依然是空的,所以還需要對每個元素都進行初始化(如果要呼叫的話)。
2、 java.lang.ClassNotFoundException指定的類不存在 這裡主要考慮一下類的名稱和路徑是否正確即可,通常都是程式試圖透過字串來載入某個類時可能引發異常。比如:呼叫Class.forName();或者呼叫ClassLoad的finaSystemClass();或者LoadClass();
3、 java.lang.NumberFormatException字串轉換為數字異常 當試圖將一個String轉換為指定的數字型別,而該字串確不滿足數字型別要求的格式時,丟擲該異常.如現在講字元型的資料“123456”轉換為數值型資料時,是允許的。但是如果字元型資料中包含了非數字型的字元,如123#56,此時轉換為數值型時就會出現異常。系統就會捕捉到這個異常,並進行處理。
4、java.lang.IndexOutOfBoundsException陣列下標越界異常 檢視呼叫的陣列或者字串的下標值是不是超出了陣列的範圍,一般來說,顯示(即直接用常數當下標)呼叫不太容易出這樣的錯,但隱式(即用變量表示下標)呼叫就經常出錯了,還有一種情況,是程式中定義的陣列的長度是透過某些特定方法決定的,不是事先宣告的,這個時候先檢視一下陣列的length,以免出現這個異常。
5、java.lang.IllegalArgumentException方法的引數錯誤 比如g.setColor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法呼叫中的引數傳遞是不是出現了錯誤。
6、java.lang.IllegalAccessException沒有訪問許可權 當應用程式要呼叫一個類,但當前的方法即沒有對該類的訪問許可權便會出現這個異常。對程式中用了Package的情況下要注意這個異常。
7、java.lang.ArithmeticException數學運算異常 當算術運算中出現了除以零這樣的運算就會出這樣的異常。
8、java.lang.ClassCastException資料型別轉換異常 當試圖將對某個物件強制執行向下轉型,但該物件又不可轉換又不可轉換為其子類的例項時將引發該異常,如下列程式碼。 Object obj = new Integer(0); String str = obj;
9、 java.lang.FileNotFoundException檔案未找到異常 當程式試圖開啟一個不存在的檔案進行讀寫時將會引發該異常。該異常由FileInputStream,FileOutputStream,RandomAccessFile的構造器宣告丟擲,即使被操作的檔案存在,但是由於某些原因不可訪問,比如開啟一個只讀檔案進行寫入,這些構造方法仍然會引發異常。
10、java.lang.ArrayStoreException陣列儲存異常 當試圖將型別不相容型別的物件存入一個Object[]陣列時將引發異常,如 Object[] obj = new String[3] obj[0] = new Integer(0);
11、java.lang.NoSuchMethodException方法不存在異常 當程式試圖透過反射來建立物件,訪問(修改或讀取)某個方法,但是該方法不存在就會引發異常。
12、 java.lang.NoSuchFiledException方法不存在異常 當程式試圖透過反射來建立物件,訪問(修改或讀取)某個filed,但是該filed不存在就會引發異常。
13、 java.lang.EOFException檔案已結束異常 當程式在輸入的過程中遇到檔案或流的結尾時,引發異常。因此該異常用於檢查是否達到檔案或流的結尾
14、java.lang.InstantiationException例項化異常 當試圖透過Class的newInstance()方法建立某個類的例項,但程式無法透過該構造器來建立該物件時引發。Class物件表示一個抽象類,介面,陣列類,基本型別 。該Class表示的類沒有對應的構造器。
15、java.lang.InterruptedException被中止異常 當某個執行緒處於長時間的等待、休眠或其他暫停狀態,而此時其他的執行緒透過Thread的interrupt方法終止該執行緒時丟擲該異常。
16、java.lang.CloneNotSupportedException 不支援克隆異常 當沒有實現Cloneable介面或者不支援克隆方法時,呼叫其clone()方法則丟擲該異常。
17、java.lang.OutOfMemoryException 記憶體不足錯誤 當可用記憶體不足以讓Java虛擬機器分配給一個物件時丟擲該錯誤。
18、java.lang.NoClassDefFoundException 未找到類定義錯誤 當Java虛擬機器或者類裝載器試圖例項化某個類,而找不到該類的定義時丟擲該錯誤。 違背安全原則異常:SecturityException 操作資料庫異常:SQLException 輸入輸出異常:IOException 通訊異常:SocketException 以上便是Java常見的幾種異常。