一、JDK中常見的異常情況
1、常見異常總結圖
2、java中異常分類
Throwable類別有兩個直接子類別:
(1)Exception:出現的問題是可以被捕獲的
(2)Error:系統錯誤,通常由JVM處理
3、被捕獲的異常分類
#(1)Check異常: 派生自Exception的異常類,必須被捕獲或再次聲明拋出
(2)運行時異常:指那些衍生自RuntimeException的異常類別。使用throw語句可以隨時拋出這種異常物件 throw new ArithmeticException(…);
二、發生異常的原因
1、使用者輸入了非法資料。
2、要開啟的檔案不存在。
3、網路通訊是連線中斷
4、JVM記憶體溢位
#三、java程式中幾種常見的例外狀況、出現此異常的原因
1、java.lang.NullpointerException(空指針異常)
這個例外的常見原因是程式中存在空指針,也就是呼叫了未經初始化或不存在的對象。
這些程式碼經常出現在物件建立和陣列呼叫中,例如當物件未初始化或圖片路徑錯誤時。在數組代碼
中出現空指針,是把數組的初始化和數組元素的初始化搞混淆了。數組的初始化是對數組分配空間,而數組元素的
初始化,是給數組中的元素賦初始值
2、java.lang.ClassNotFoundException(指定的類不存在)
原因:當試圖將一個String類型資料轉換為指定的數字類型,但該字串不滿足數值型資料的要求時,就拋出這個異
#常。在將資料從String類型轉換為數值型時,例如將"123456"轉換為數值型的運算是可行的。但是如果String類型的資料中包含了
非數字型的字符,如123*56,此時轉換為數值型時就會出現異常。系統就會捕捉到這個異常,並進行處理
3、java.lang.ClassNotFoundExceptio(指定的類別不存在)
這個問題的根源在於類別的名稱和路徑不正確,當程式試圖透過字串載入某個類別時,可能會導致異常。例如:
呼叫Class.forName()、或呼叫ClassLoad的finaSystemClass()、或是LoadClass()時出現異常
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(資料型別轉換例外)
當試圖將對某個物件強制執行向下轉換,但該物件又不可轉換或又不可轉換為其子類別的實例時將出現該異常
9、 java.lang.FileNotFoundException(檔案未找到異常)
當程式開啟一個不存在的檔案來進行讀寫時將會引發該異常。該異常由FileInputStream,FileOutputStream,
RandomAccessFile的建構器聲明拋出,即使被操作的檔案存在,但是由於某些原因不可訪問,例如打開一個
只有唯讀權限的文件並向其中寫入數據,以上構造方法依然會引發異常
10、java.lang.ArrayStoreException(數組存儲異常)
當試圖將類型為不相容類型的物件存入一個Object[]陣列時將引發異常
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虛擬機或類別裝載器試圖實例化某個類,而找不到該類別的定義時拋出該錯誤
以上是Java程式常見異常及處理有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!