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.EOFException(文件已結束異常)

當程序在輸入的過程中遇到文件或流的結尾時,引發異常。因此該異常用於檢查是否達到文件或流的結尾

 

13、java.lang.InstantiationException(實例化異常)

當試圖通過Class的newInstance()方法創建某個類的實例,但程序無法通過該構造器來創建該對象時引發。Class對象表示一個抽象類,接口,數組類,基本類型 。該Class表示的類沒有對應的構造器。

 

14、java.lang.InterruptedException(被中止異常)

當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。

 

15、java.lang.CloneNotSupportedException (不支持克隆異常)

當沒有實現Cloneable接口或者不支持克隆方法時,調用其clone()方法則拋出該異常。

 

16、java.lang.OutOfMemoryException (內存不足錯誤)

當可用內存不足以讓Java虛擬機分配給一個對象時拋出該錯誤。

 

17、java.lang.NoClassDefFoundException (未找到類定義錯誤)

當Java虛擬機或者類裝載器試圖實例化某個類,而找不到該類的定義時拋出該錯誤。

 

18、SecturityException(違背安全原則異常)

 

19、SQLException(操作數據庫異常)

 

20、IOException(輸入輸出異常)

 

21、SocketException(通信異常)

 

22、java.lang.Error(錯誤)

錯誤,是所有錯誤的基類,用於標識嚴重的程序運行問題,這些問題通常描述一些不應該被應用程序捕獲的反常情況。

原因:對系統所訪問外部資源,未執行關閉操作,導致外部資源大量浪費,最終可能導致系統無法正常運行;對系統所訪問的外部資源關閉次數太多,外部系統無法正常處理;系統訪問的外部資源出現異常情況。

解決方法:訪問外部資源之前,首先檢查該資源(如數據庫)是否可正常連接或操作;訪問外部資源時,如果進行了連接,一定要關閉操作,並且僅進行一次關閉操作;盡量在同一操作中共享外部資源,以減少該操作對資源的浪費,提高程序的執行效率。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM