Java常見異常彙總 這些「攔路虎」你碰見了嗎?

做爲一隻最敬業的程序員,最不能接受的就是個人編程出現bug!可見咱們bug是如此的深惡痛覺!它已成爲咱們職業生涯中的攔路虎,因此今天好程序員精心爲你們總結下Java中常見的幾種異常,望你們多多注意java

一、java.lang.NullPointerException(空指針異常) 
調用了未經初始化的對象或者是不存在的對象常常出如今建立圖片,調用數組這些操做中,好比圖片未經初始化,或者圖片建立時的路徑錯誤等等。對數組操做中出現空指針, 即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配須要的空間,而初始化後的數組,其中的元素並無實例化, 依然是空的,因此還須要對每一個元素都進行初始化(若是要調用的話)。程序員

二、 java.lang.ClassNotFoundException指定的類不存在數據庫

這裏主要考慮一下類的名稱和路徑是否正確便可,一般都是程序試圖經過字符串來加載某個類時可能引起異常好比:調用Class.forName();或者調用ClassLoad的finaSystemClass();或者LoadClass();編程

三、 java.lang.NumberFormatException字符串轉換爲數字異常數組

當試圖將一個String轉換爲指定的數字類型,而該字符串確不知足數字類型要求的格式時,拋出該異常.如如今講字符型的數據「123456」轉換爲數值型數據時,是容許的。可是若是字符型數據中包含了非數字型的字符,如123#56,此時轉換爲數值型時就會出現異常。系統就會捕捉到這個異常,並進行處理。安全

四、java.lang.IndexOutOfBoundsException數組下標越界異常dom

查看調用的數組或者字符串的下標值是否是超出了數組的範圍,通常來講,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變量表示下標)調用就常常出錯了,還有一種狀況,是程序中定義的數組的長度是經過某些特定方法決定的,不是事先聲明的,這個時候最好先查看一下數組的length,以避免出現這個異常。編碼

五、java.lang.IllegalArgumentException方法的參數錯誤spa

好比g.setColor(int red,int green,int blue)這個方法中的三個值,若是有超過255的也會出現這個異常,所以一旦發現這個異常,咱們要作的,就是趕忙去檢查一下方法調用中的參數傳遞是否是出現了錯誤。線程

六、java.lang.IllegalAccessException沒有訪問權限

當應用程序要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。對程序中用了Package的狀況下要注意這個異常

七、java.lang.ArithmeticException數學運算異常

當算術運算中出現了除以零這樣的運算就會出這樣的異常。

八、java.lang.ClassCastException數據類型轉換異常

當試圖將對某個對象強制執行向下轉型,但該對象又不可轉換又不可轉換爲其子類的實例時將引起該異常,以下列代碼。

  1. Object obj = new Integer(0);
  2.  String str = obj;

九、 java.lang.FileNotFoundException文件未找到異常

當程序試圖打開一個不存在的文件進行讀寫時將會引起該異常。該異常由FileInputStream,FileOutputStream,RandomAccessFile的構造器聲明拋出,即便被操做的文件存在,可是因爲某些緣由不可訪問,好比打開一個只讀文件進行寫入,這些構造方法仍然會引起異常

十、java.lang.ArrayStoreException數組存儲異常

當試圖將類型不兼容類型的對象存入一個Object[]數組時將引起異常,

  1. Object[] obj = new String[3]
  2.  obj[0] = new Integer(0);

十一、java.lang.NoSuchMethodException方法不存在異常

當程序試圖經過反射來建立對象,訪問(修改或讀取)某個方法,可是該方法不存在就會引起異常

十二、 java.lang.NoSuchFiledException方法不存在異常

當程序試圖經過反射來建立對象,訪問(修改或讀取)某個filed,可是該filed不存在就會引起異常。

1三、 java.lang.EOFException文件已結束異常

當程序在輸入的過程當中遇到文件或流的結尾時,引起異常。所以該異經常使用於檢查是否達到文件或流的結尾

1四、java.lang.InstantiationException實例化異常

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

1五、java.lang.InterruptedException被停止異常

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

1六、java.lang.CloneNotSupportedException 不支持克隆異常

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

1七、java.lang.OutOfMemoryException 內存不足錯誤

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

1八、java.lang.NoClassDefFoundException 未找到類定義錯誤

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

違背安全原則異常:SecturityException

操做數據庫異常:SQLException

輸入輸出異常:IOException

通訊異常:SocketException

之後即是Java常見的幾種異常但願各位老鐵同行,成功避讓。最後願全部同行山中不見「虎」笑隱竹林中!編碼bug,江湖永相見!

相關文章
相關標籤/搜索