JDK源码解析之 java.lang.Error
java.lang.Error
錯(cuò)誤。是所有錯(cuò)誤的基類,用于標(biāo)識(shí)嚴(yán)重的程序運(yùn)行問題。這些問題通常描述一些不應(yīng)被應(yīng)用程序捕獲的反常情況。
一、源碼部分
//繼承了java.lang.Throwable public class Error extends Throwable {//適用于java序列化機(jī)制,過判斷類的serialVersionUID來驗(yàn)證的版本一致的static final long serialVersionUID = 4980196508277280342L;//構(gòu)造一個(gè)錯(cuò)誤的詳細(xì)信息,可通過調(diào)用initCause來初始化,默認(rèn)值為nullpublic Error() {super();}//使用指定的詳細(xì)信息消息構(gòu)造新錯(cuò)誤。public Error(String message) {super(message);}//使用指定的詳細(xì)信息和原因構(gòu)造新錯(cuò)誤。public Error(String message, Throwable cause) {super(message, cause);}//使用指定的原因構(gòu)造新錯(cuò)誤。public Error(Throwable cause) {super(cause);}//使用指定的詳細(xì)信息消息、原因、啟用或禁用禁止顯示以及啟用或禁用可寫堆棧跟蹤來構(gòu)造新錯(cuò)誤。protected Error(String message, Throwable cause,boolean enableSuppression,boolean writableStackTrace) {super(message, cause, enableSuppression, writableStackTrace);} }二、Java中常見的錯(cuò)誤
1、java.lang.Error
錯(cuò)誤。是所有錯(cuò)誤的基類,用于標(biāo)識(shí)嚴(yán)重的程序運(yùn)行問題。這些問題通常描述一些不應(yīng)被應(yīng)用程序捕獲的反常情況。
2、java.lang.AbstractMethodError
抽象方法錯(cuò)誤。當(dāng)應(yīng)用試圖調(diào)用抽象方法時(shí)拋出。
3、java.lang.Asserti
斷言錯(cuò)。用來指示一個(gè)斷言失敗的情況。
4、java.lang.ClassCircularityError
類循環(huán)依賴錯(cuò)誤。在初始化一個(gè)類時(shí),若檢測(cè)到類之間循環(huán)依賴則拋出該異常。
5、java.lang.ClassFormatError
類格式錯(cuò)誤。當(dāng)Java虛擬機(jī)試圖從一個(gè)文件中讀取Java類,而檢測(cè)到該文件的內(nèi)容不符合類的有效格式時(shí)拋出。
6、java.lang.ExceptionInInitializerError
初始化程序錯(cuò)誤。當(dāng)執(zhí)行一個(gè)類的靜態(tài)初始化程序的過程中,發(fā)生了異常時(shí)拋出。靜態(tài)初始化程序是指直接包含于類中的static語句段。
7、java.lang.IllegalAccessError
違法訪問錯(cuò)誤。當(dāng)一個(gè)應(yīng)用試圖訪問、修改某個(gè)類的域(Field)或者調(diào)用其方法,但是又違反域或方法的可見性聲明,則拋出該異常。
8、java.lang.IncompatibleClassChangeError
不兼容的類變化錯(cuò)誤。當(dāng)正在執(zhí)行的方法所依賴的類定義發(fā)生了不兼容的改變時(shí),拋出該異常。一般在修改了應(yīng)用中的某些類的聲明定義而沒有對(duì)整個(gè)應(yīng)用重新編譯而直接運(yùn)行的情況下,容易引發(fā)該錯(cuò)誤。
9、java.lang.Instantiati
實(shí)例化錯(cuò)誤。當(dāng)一個(gè)應(yīng)用試圖通過Java的new操作符構(gòu)造一個(gè)抽象類或者接口時(shí)拋出該異常.
10、java.lang.InternalError
內(nèi)部錯(cuò)誤。用于指示Java虛擬機(jī)發(fā)生了內(nèi)部錯(cuò)誤。
11、java.lang.LinkageError
鏈接錯(cuò)誤。該錯(cuò)誤及其所有子類指示某個(gè)類依賴于另外一些類,在該類編譯之后,被依賴的類改變了其類定義而沒有重新編譯所有的類,進(jìn)而引發(fā)錯(cuò)誤的情況。
12、java.lang.NoClassDefFoundError
未找到類定義錯(cuò)誤。當(dāng)Java虛擬機(jī)或者類裝載器試圖實(shí)例化某個(gè)類,而找不到該類的定義時(shí)拋出該錯(cuò)誤。
13、java.lang.NoSuchFieldError
域不存在錯(cuò)誤。當(dāng)應(yīng)用試圖訪問或者修改某類的某個(gè)域,而該類的定義中沒有該域的定義時(shí)拋出該錯(cuò)誤。
14、java.lang.NoSuchMethodError
方法不存在錯(cuò)誤。當(dāng)應(yīng)用試圖調(diào)用某類的某個(gè)方法,而該類的定義中沒有該方法的定義時(shí)拋出該錯(cuò)誤。
15、java.lang.OutOfMemoryError
內(nèi)存不足錯(cuò)誤。當(dāng)可用內(nèi)存不足以讓Java虛擬機(jī)分配給一個(gè)對(duì)象時(shí)拋出該錯(cuò)誤。
16、java.lang.StackOverflowError
堆棧溢出錯(cuò)誤。當(dāng)一個(gè)應(yīng)用遞歸調(diào)用的層次太深而導(dǎo)致堆棧溢出時(shí)拋出該錯(cuò)誤。
17、java.lang.ThreadDeath
線程結(jié)束。當(dāng)調(diào)用Thread類的stop方法時(shí)拋出該錯(cuò)誤,用于指示線程結(jié)束。
18、java.lang.UnknownError
未知錯(cuò)誤。用于指示Java虛擬機(jī)發(fā)生了未知嚴(yán)重錯(cuò)誤的情況。
19、java.lang.UnsatisfiedLinkError
未滿足的鏈接錯(cuò)誤。當(dāng)Java虛擬機(jī)未找到某個(gè)類的聲明為native方法的本機(jī)語言定義時(shí)拋出。
20、java.lang.UnsupportedClassVersi
不支持的類版本錯(cuò)誤。當(dāng)Java虛擬機(jī)試圖從讀取某個(gè)類文件,但是發(fā)現(xiàn)該文件的主、次版本號(hào)不被當(dāng)前Java虛擬機(jī)支持的時(shí)候,拋出該錯(cuò)誤。
21、java.lang.VerifyError
驗(yàn)證錯(cuò)誤。當(dāng)驗(yàn)證器檢測(cè)到某個(gè)類文件中存在內(nèi)部不兼容或者安全問題時(shí)拋出該錯(cuò)誤。
22、java.lang.VirtualMachineError
虛擬機(jī)錯(cuò)誤。用于指示虛擬機(jī)被破壞或者繼續(xù)執(zhí)行操作所需的資源不足的情況。
總結(jié)
以上是生活随笔為你收集整理的JDK源码解析之 java.lang.Error的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker容器网络
- 下一篇: CentOS 5打造全功能Web服务器