NO.1 java.lang.NullPointerException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.NullPointerException
這個異常的解釋是 "程序遇上了空指針 ",簡單地說就是調用了未經初始化的對象或者是不存在的對象,對數組操作中出現空指針,很
多情況下是一些剛開始學習編程的朋友常犯的錯誤,即把數組的初始化和數組元素的初始化混淆起來了。數組的初始化是對數組分配需要的
空間,而初始化后的數組,其中的元素并沒有實例化,依然是空的,所以還需要對每個元素都進行初始化(如果要調用的話)
當應用程序試圖在需要對象的地方使用 null 時,拋出該異常。這種情況包括:
調用 null 對象的實例方法。
訪問或修改 null 對象的字段。
將 null 作為一個數組,獲得其長度。
將 null 作為一個數組,訪問或修改其時間片。
將 null 作為 Throwable 值拋出。
應用程序應該拋出該類的實例,指示其他對 null 對象的非法使用。
NO.2 java.lang.ClassNotFoundException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.ClassNotFoundException
這個異常的解釋是 "指定的類不存在 ",這里主要考慮一下類的名稱和路徑是否正確即可.
當應用程序試圖使用以下方法通過字符串名加載類時,拋出該異常:
Class 類中的 forName 方法。
ClassLoader 類中的 findSystemClass 方法。
ClassLoader 類中的 loadClass 方法。
但是沒有找到具有指定名稱的類的定義。
NO.3 java.lang.ArithmeticException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
當出現異常的運算條件時,拋出此異常。
這個異常的解釋是 "數學運算異常 ",比如程序中出現了除以零這樣的運算就會出這樣的異常,對這種異常,大家就要好好檢查一下自
己程序中涉及到數學運算的地方,公式是不是有不妥了。
NO.4 java.lang.ArrayIndexOutOfBoundsException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException
這個異常的解釋是 "數組下標越界 ",現在程序中大多都有對數組的操作,因此在調用數組的時候一
定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(
即用變量表示下標)調用就經常出錯了,還有一種情況,是程序中定義的數組的長度是通過某些特定方法決定的,不是事先聲明的,這個時
候,最好先查看一下數組的length,以免出現這個異常。
用非法索引訪問數組時拋出的異常。如果索引為負或大于等于數組大小,則該索引為非法索引。
NO.5 java.lang.IllegalArgumentException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
拋出的異常表明向方法傳遞了一個不合法或不正確的參數。
這個異常的解釋是 "方法的參數錯誤 ",很多J2ME的類庫中的方法在一些情況下都會引發這樣的錯誤,比如音量調節方法中的音量參數
如果寫成負數就會出現這個異常,再比如 g.setColor(int red,int green,int blue)這個方法中的三個值,如果有超過255的也會出現
這個異常,因此一旦發現這個異常,我們要做的,就是趕緊去檢查一下方法調用中的參數傳遞是不是出現了錯誤。
NO.6 java.lang.IllegalAccessException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.IllegalAccessException
這個異常的解釋是 "沒有訪問權限 ",當應用程序要調用一個類,但當前的方法即沒有對該類的訪問權限便會出現這個異常。對程序中
用了Package的情況下要注意這個異常。
當應用程序試圖創建一個實例(而不是數組)、設置或獲取一個字段,或者調用一個方法,但當前正在執行的方法無法訪問指定類、字段、
方法或構造方法的定義時,拋出 IllegalAccessException。
NO.7 java.lang.IncompatibleClassChangeError
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.IncompatibleClassChangeError
不兼容的類變化錯誤。當正在執行的方法所依賴的類定義發生了不兼容的改變時,拋出該異常。一般在修改了應用中的某些類的聲明定義而
沒有對整個應用重新編譯而直接運行的情況下,容易引發該錯誤。
在某些類定義中出現不兼容的類更改時拋出該異常。某些目前執行的方法所依賴的類定義已發生了變化。
NO.8 java.lang.InstantiationError
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
java.lang.IncompatibleClassChangeError
java.lang.InstantiationError
實例化錯誤。當一個應用試圖通過Java的new操作符構造一個抽象類或者接口時拋出該異常.
通常由編譯器捕獲此錯誤;如果類定義中存在不兼容的更改,則此錯誤將只可能在運行時發生。
NO.9 java.lang.LinkageError
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.LinkageError
鏈接錯誤。該錯誤及其所有子類指示某個類依賴于另外一些類,在該類編譯之后,被依賴的類改變了其類定義而沒有重新編譯所有的類,進
而引發錯誤的情況。
LinkageError 的子類指示一個類在一定程度上依賴于另一個類;但是,在編譯前一個類之后,后一個類發生了不相容的改變。
NO.10 java.lang.StackOverflowError
java.lang.Object
java.lang.Throwable
java.lang.Error
java.lang.VirtualMachineError
java.lang.StackOverflowError
堆棧溢出錯誤。當一個應用遞歸調用的層次太深而導致堆棧溢出時拋出該錯誤。
NO.11 java.lang.Exception
java.lang.Object
java.lang.Throwable
java.lang.Exception
Exception 類及其子類是 Throwable 的一種形式,它指出了合理的應用程序想要捕獲的條件。 (異常層次結構的根類)
NO.12 java.lang.RuntimeException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。可能在執行方法期間拋出但未被捕獲的 RuntimeException
的任何子類都無需在 throws 子句中進行聲明。 (java.lang中異常的基類)
NO.13 java.util.InputMismatchException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.util.NoSuchElementException
java.util.InputMismatchException
由 Scanner 拋出,表明用于檢索的標記與期望類型的模式不匹配,或者該標記處在期望類型的范圍之外。
NO.14 java.io.IOException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
當發生某種 I/O 異常時,拋出此異常。此類為異常的通用類,它是由失敗的或中斷的 I/O 操作生成的。
NO.15 java.io.FileNotFoundException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.io.FileNotFoundException
當試圖打開指定路徑名表示的文件失敗時,拋出此異常。
在不存在具有指定路徑名的文件時,此異常將由 FileInputStream、FileOutputStream 和 RandomAccessFile 構造方法拋出。
如果該文件存在,但是由于某些原因不可訪問,比如試圖打開一個只讀文件進行寫入,此時這些構造方法仍然會拋出該異常。
NO.16 java.io.EOFException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.io.EOFException
當輸入過程中意外到達文件或流的末尾時,拋出此異常。
此異常主要被數據輸入流用來表明到達流的末尾。注意,其他許多輸入操作返回一個特殊值表示到達流的末尾,而不是拋出異常。
NO.17 java.lang.InterruptedException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.InterruptedException
當線程在很長一段時間內一直處于正在等待、休眠或暫停狀態,而另一個線程用 Thread 類中的 iterrupt 方法中斷它時,拋出該異常。
NO.18 java.lang.NumberFormatException
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.IllegalArgumentException
java.lang.NumberFormatException
當應用程序試圖將字符串轉換成一種數值類型,但該字符串不能轉換為適當格式時,拋出該異常。