本文整理自網(wǎng)絡(luò),參考:https://blog.csdn.net/liuj2511981/article/details/8524418
綜述
1.Throwable 類(lèi)是 Java 語(yǔ)言中所有錯(cuò)誤或異常的超類(lèi)掖蛤。它的兩個(gè)子類(lèi)是Error和Exception杀捻;
2.Error 是 Throwable 的子類(lèi),用于指示合理的應(yīng)用程序不應(yīng)該試圖捕獲的嚴(yán)重問(wèn)題蚓庭。大多數(shù)這樣的錯(cuò)誤都是異常條件致讥。雖然 ThreadDeath 錯(cuò)誤是一個(gè)“正規(guī)”的條件,但它也是 Error 的子類(lèi)器赞,因?yàn)榇蠖鄶?shù)應(yīng)用程序都不應(yīng)該試圖捕獲它垢袱。在執(zhí)行該方法期間,無(wú)需在其 throws 子句中聲明可能拋出但是未能捕獲的 Error 的任何子類(lèi)港柜,因?yàn)檫@些錯(cuò)誤可能是再也不會(huì)發(fā)生的異常條件请契。
3.Exception 類(lèi)及其子類(lèi)是 Throwable 的一種形式,它指出了合理的應(yīng)用程序想要捕獲的條件夏醉。
4.RuntimeException 是那些可能在 Java 虛擬機(jī)正常運(yùn)行期間拋出的異常的超類(lèi)爽锥。可能在執(zhí)行方法期間拋出但未被捕獲的RuntimeException 的任何子類(lèi)都無(wú)需在 throws 子句中進(jìn)行聲明畔柔。它是Exception的子類(lèi)氯夷。
5.方法重寫(xiě)時(shí):在子類(lèi)中一個(gè)重寫(xiě)的方法可能只拋出父類(lèi)中聲明過(guò)的異常或者異常的子類(lèi)
Java 中異常類(lèi)的繼承關(guān)系圖:
Error類(lèi)和Exception類(lèi)二者的不同之處:
Java 中定義了兩類(lèi)異常:
1) Checked exception: 一般而言肠槽,Checked Exception 表示這個(gè)Exception 必須要被處理,也就是說(shuō)程序設(shè)計(jì)者應(yīng)該已經(jīng)知道可能會(huì)收到某個(gè)Exception(因?yàn)橐猼ry catch住) 奢啥,所以程序設(shè)計(jì)者應(yīng)該能針對(duì)這些不同的Checked Exception 做出不同的處理秸仙。異常的向上拋出機(jī)制進(jìn)行處理,假如子類(lèi)可能產(chǎn)生A異常桩盲,那么在父類(lèi)中也必須throws A異常寂纪。可能導(dǎo)致的問(wèn)題:代碼效率低,耦合度過(guò)高捞蛋。
2) Unchecked exception: 這類(lèi)異常都是Error和RuntimeException以及他們的子類(lèi)