Java常見異常總結(jié)


  • 算術(shù)異常類:ArithmeticExecption

  • 空指針異常類:NullPointerException

  • 類型強(qiáng)制轉(zhuǎn)換異常:ClassCastException

  • 數(shù)組負(fù)下標(biāo)異常:NegativeArrayException

  • 數(shù)組下標(biāo)越界異常:ArrayIndexOutOfBoundsException

  • 違背安全原則異常:SecturityException

  • 文件已結(jié)束異常:EOFException

  • 文件未找到異常:FileNotFoundException

  • 字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException

  • 操作數(shù)據(jù)庫(kù)異常:SQLException

  • 輸入輸出異常:IOException

  • 方法未找到異常:NoSuchMethodException

  • 抽象方法錯(cuò)誤。當(dāng)應(yīng)用試圖調(diào)用抽象方法時(shí)拋出 :java.lang.AbstractMethodError

  • 斷言錯(cuò), 用來指示一個(gè)斷言失敗的情況:java.lang.AssertionError

  • 類循環(huán)依賴錯(cuò)誤。在初始化一個(gè)類時(shí),若檢測(cè)到類之間循環(huán)依賴則拋出該異常:java.lang.ClassCircularityError

  • 類格式錯(cuò)誤。當(dāng)Java虛擬機(jī)試圖從一個(gè)文件中讀取Java類,檢測(cè)到該文件的內(nèi)容不符合類的有效格式時(shí)拋出:java.lang.ClassFormatError

  • 錯(cuò)誤。是所有錯(cuò)誤的基類,用于標(biāo)識(shí)嚴(yán)重的程序運(yùn)行問題。這些問題通常描述一些不應(yīng)被應(yīng)用程序捕獲的反常情況:java.lang.Error

  • 初始化程序錯(cuò)誤。當(dāng)執(zhí)行一個(gè)類的靜態(tài)初始化程序的過程中,發(fā)生了異常時(shí)拋出。靜態(tài)初始化程序是指直接包含于類中的static語句段:java.lang.ExceptionInInitializerError

  • 違法訪問錯(cuò)誤。當(dāng)一個(gè)應(yīng)用試圖訪問、修改某個(gè)類的域(Field)或者調(diào)用其方法,但是又違反域或方法的可見性聲明,則拋出該異常:java.lang.IllegalAccessError

  • 不兼容的類變化錯(cuò)誤。當(dāng)正在執(zhí)行的方法所依賴的類定義發(fā)生了不兼容的改變時(shí),拋出該異常。一般在修改了應(yīng)用中的某些類的聲明定義而沒有對(duì)整個(gè)應(yīng)用重新編譯而直接運(yùn)行的情況下,容易引發(fā)該錯(cuò)誤:java.lang.IncompatibleClassChangeError

  • 實(shí)例化錯(cuò)誤。當(dāng)一個(gè)應(yīng)用試圖通過Java的new操作符構(gòu)造一個(gè)抽象類或者接口時(shí)拋出該異常:java.lang.InstantiationError

  • 內(nèi)部錯(cuò)誤。用于指示Java虛擬機(jī)發(fā)生了內(nèi)部錯(cuò)誤:java.lang.InternalError

  • 鏈接錯(cuò)誤。該錯(cuò)誤及其所有子類指示某個(gè)類依賴于另外一些類,在該類編譯之后,被依賴的類改變了其類定義而沒有重新編譯所有的類,進(jìn)而引發(fā)錯(cuò)誤的情況:java.lang.LinkageError

  • 未找到類定義錯(cuò)誤。當(dāng)Java虛擬機(jī)或者類裝載器試圖實(shí)例化某個(gè)類,而找不到該類的定義時(shí)拋出該錯(cuò)誤:java.lang.NoClassDefFoundError

  • 域不存在錯(cuò)誤。當(dāng)應(yīng)用試圖訪問或者修改某類的某個(gè)域,而該類的定義中沒有該域的定義時(shí)拋出該錯(cuò)誤:java.lang.NoSuchFieldError

  • 方法不存在錯(cuò)誤。當(dāng)應(yīng)用試圖調(diào)用某類的某個(gè)方法,而該類的定義中沒有該方法的定義時(shí)拋出該錯(cuò)誤:java.lang.NoSuchMethodError

  • 內(nèi)存不足錯(cuò)誤。當(dāng)可用內(nèi)存不足以讓Java虛擬機(jī)分配給一個(gè)對(duì)象時(shí)拋出該錯(cuò)誤:java.lang.OutOfMemoryError

  • 堆棧溢出錯(cuò)誤。當(dāng)一個(gè)應(yīng)用遞歸調(diào)用的層次太深而導(dǎo)致堆棧溢出時(shí)拋出該錯(cuò)誤:java.lang.StackOverflowError

  • 線程結(jié)束。當(dāng)調(diào)用Thread類的stop方法時(shí)拋出該錯(cuò)誤,用于指示線程結(jié)束:java.lang.ThreadDeath

  • 未知錯(cuò)誤。用于指示Java虛擬機(jī)發(fā)生了未知嚴(yán)重錯(cuò)誤的情況:java.lang.UnknownError

  • 未滿足的鏈接錯(cuò)誤。當(dāng)Java虛擬機(jī)未找到某個(gè)類的聲明為native方法的本機(jī)語言定義時(shí)拋出:java.lang.UnsatisfiedLinkError

  • 不支持的類版本錯(cuò)誤。當(dāng)Java虛擬機(jī)試圖從讀取某個(gè)類文件,但是發(fā)現(xiàn)該文件的主、次版本號(hào)不被當(dāng)前Java虛擬機(jī)支持的時(shí)候,拋出該錯(cuò)誤:java.lang.UnsupportedClassVersionError

  • 驗(yàn)證錯(cuò)誤。當(dāng)驗(yàn)證器檢測(cè)到某個(gè)類文件中存在內(nèi)部不兼容或者安全問題時(shí)拋出該錯(cuò)誤:java.lang.VerifyError

  • 虛擬機(jī)錯(cuò)誤。用于指示虛擬機(jī)被破壞或者繼續(xù)執(zhí)行操作所需的資源不足的情況:java.lang.VirtualMachineError

  • 算術(shù)條件異常。譬如:整數(shù)除零等:java.lang.ArithmeticException

  • 數(shù)組索引越界異常。當(dāng)對(duì)數(shù)組的索引值為負(fù)數(shù)或大于等于數(shù)組大小時(shí)拋出:java.lang.ArrayIndexOutOfBoundsException

  • 數(shù)組存儲(chǔ)異常。當(dāng)向數(shù)組中存放非數(shù)組聲明類型對(duì)象時(shí)拋出:java.lang.ArrayStoreException

  • 類造型異常。假設(shè)有類A和B(A不是B的父類或子類),O是A的實(shí)例,那么當(dāng)強(qiáng)制將O構(gòu)造為類B的實(shí)例時(shí)拋出該異常。該異常經(jīng)常被稱為強(qiáng)制類型轉(zhuǎn)換異常 :java.lang.ClassCastException

  • 找不到類異常。當(dāng)應(yīng)用試圖根據(jù)字符串形式的類名構(gòu)造類,而在遍歷CLASSPAH之后找不到對(duì)應(yīng)名稱的class文件時(shí),拋出該異常:java.lang.ClassNotFoundException

  • 不支持克隆異常。當(dāng)沒有實(shí)現(xiàn)Cloneable接口或者不支持克隆方法時(shí),調(diào)用其clone()方法則拋出該異常:java.lang.CloneNotSupportedException

  • 枚舉常量不存在異常。當(dāng)應(yīng)用試圖通過名稱和枚舉類型訪問一個(gè)枚舉對(duì)象,但該枚舉對(duì)象并不包含常量時(shí),拋出該異常:java.lang.EnumConstantNotPresentException

  • 根異常。用以描述應(yīng)用程序希望捕獲的情況:java.lang.Exception

  • 違法的訪問異常。當(dāng)應(yīng)用試圖通過反射方式創(chuàng)建某個(gè)類的實(shí)例、訪問該類屬性、調(diào)用該類方法,而當(dāng)時(shí)又無法訪問類的、屬性的、方法的或構(gòu)造方法的定義時(shí)拋出該異常:java.lang.IllegalAccessException

  • 違法的監(jiān)控狀態(tài)異常。當(dāng)某個(gè)線程試圖等待一個(gè)自己并不擁有的對(duì)象(O)的監(jiān)控器或者通知其他線程等待該對(duì)象(O)的監(jiān)控器時(shí),拋出該異常:java.lang.IllegalMonitorStateException

  • 違法的狀態(tài)異常。當(dāng)在Java環(huán)境和應(yīng)用尚未處于某個(gè)方法的合法調(diào)用狀態(tài),而調(diào)用了該方法時(shí),拋出該異常:java.lang.IllegalStateException

  • 違法的線程狀態(tài)異常。當(dāng)縣城尚未處于某個(gè)方法的合法調(diào)用狀態(tài),而調(diào)用了該方法時(shí),拋出異常:java.lang.IllegalThreadStateException

  • 索引越界異常。當(dāng)訪問某個(gè)序列的索引值小于0或大于等于序列大小時(shí),拋出該異常:java.lang.IndexOutOfBoundsException

  • 實(shí)例化異常。當(dāng)試圖通過newInstance()方法創(chuàng)建某個(gè)類的實(shí)例,而該類是一個(gè)抽象類或接口時(shí),拋出該異常:java.lang.InstantiationException

  • 被中止異常。當(dāng)某個(gè)線程處于長(zhǎng)時(shí)間的等待、休眠或其他暫停狀態(tài),而此時(shí)其他的線程通過Thread的interrupt方法終止該線程時(shí)拋出該異常:java.lang.InterruptedException

  • 數(shù)組大小為負(fù)值異常。當(dāng)使用負(fù)數(shù)大小值創(chuàng)建數(shù)組時(shí)拋出該異常:java.lang.NegativeArraySizeException

  • 屬性不存在異常。當(dāng)訪問某個(gè)類的不存在的屬性時(shí)拋出該異常:java.lang.NoSuchFieldException

  • 方法不存在異常。當(dāng)訪問某個(gè)類的不存在的方法時(shí)拋出該異常:java.lang.NoSuchMethodException

  • 空指針異常。當(dāng)應(yīng)用試圖在要求使用對(duì)象的地方使用了null時(shí),拋出該異常。譬如:調(diào)用null對(duì)象的實(shí)例方法、訪問null對(duì)象的屬性、計(jì)算null對(duì)象的長(zhǎng)度、使用throw語句拋出null等等:java.lang.NullPointerException

  • 數(shù)字格式異常。當(dāng)試圖將一個(gè)String轉(zhuǎn)換為指定的數(shù)字類型,而該字符串確不滿足數(shù)字類型要求的格式時(shí),拋出該異常:java.lang.NumberFormatException

  • 運(yùn)行時(shí)異常。是所有Java虛擬機(jī)正常操作期間可以被拋出的異常的父類:java.lang.RuntimeException

  • 安全異常。由安全管理器拋出,用于指示違反安全情況的異常:java.lang.SecurityException

  • 字符串索引越界異常。當(dāng)使用索引值訪問某個(gè)字符串中的字符,而該索引值小于0或大于等于序列大小時(shí),拋出該異常:java.lang.StringIndexOutOfBoundsException

  • 類型不存在異常:java.lang.TypeNotPresentException


Java中的異常還有很多,下面就不再一一列舉了,其實(shí)只要看懂了異常意思,基本上就能找到出錯(cuò)的原因和位置了,那么找到解答的方法也就會(huì)快一些
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容