java中error和exception的區(qū)別

Error類和Exception類的父類都是throwable類,他們的區(qū)別是:

Error類一般是指與虛擬機(jī)相關(guān)的問(wèn)題,如系統(tǒng)崩潰,虛擬機(jī)錯(cuò)誤,內(nèi)存空間不足,方法調(diào)用棧溢等。對(duì)于這類錯(cuò)誤的導(dǎo)致的應(yīng)用程序中斷,僅靠程序本身無(wú)法恢復(fù)和預(yù)防,遇到這樣的錯(cuò)誤,建議讓程序終止。
Exception類表示程序可以處理的異常,可以捕獲且可能恢復(fù)。遇到這類異常,應(yīng)該盡可能處理異常,使程序恢復(fù)運(yùn)行,而不應(yīng)該隨意終止異常。
Exception類又分為運(yùn)行時(shí)異常(Runtime Exception)和受檢查的異常(Checked Exception ),運(yùn)行時(shí)異常;ArithmaticException,IllegalArgumentException,編譯能通過(guò),但是一運(yùn)行就終止了,程序不會(huì)處理運(yùn)行時(shí)異常,出現(xiàn)這類異常,程序會(huì)終止。而受檢查的異常,要么用try。。。catch捕獲,要么用throws字句聲明拋出,交給它的父類處理,否則編譯不會(huì)通過(guò)。

①.Exception(異常)是應(yīng)用程序中可能的可預(yù)測(cè)、可恢復(fù)問(wèn)題。一般大多數(shù)異常表示中度到輕度的問(wèn)題。異常一般是在特定環(huán)境下產(chǎn)生的,通常出現(xiàn)在代碼的特定方法和操作中。在 EchoInput 類中,當(dāng)試圖調(diào)用 readLine 方法時(shí),可能出現(xiàn) IOException 異常。
Exception 類有一個(gè)重要的子類 RuntimeException。RuntimeException 類及其子類表示“JVM 常用操作”引發(fā)的錯(cuò)誤。例如,若試圖使用空值對(duì)象引用、除數(shù)為零或數(shù)組越界,則分別引發(fā)運(yùn)行時(shí)異常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
②.Error(錯(cuò)誤)表示運(yùn)行應(yīng)用程序中較嚴(yán)重問(wèn)題。大多數(shù)錯(cuò)誤與代碼編寫(xiě)者執(zhí)行的操作無(wú)關(guān),而表示代碼運(yùn)行時(shí) JVM(Java 虛擬機(jī))出現(xiàn)的問(wèn)題。例如,當(dāng) JVM 不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時(shí),將出現(xiàn) OutOfMemoryError。
檢查異常 和 未檢查異常 的劃分

Java中的異常分為兩大類:
1.Checked Exception(非Runtime Exception)
2.Unchecked Exception(Runtime Exception)
運(yùn)行時(shí)異常
RuntimeException類是Exception類的子類,它叫做運(yùn)行時(shí)異常,Java中的所有運(yùn)行時(shí)異常都會(huì)直接或者間接地繼承自RuntimeException類。
Java中凡是繼承自Exception,而不繼承自RuntimeException類的異常都是非運(yùn)行時(shí)異常。
一個(gè)try后面可以跟多個(gè)catch,但不管多少個(gè),最多只會(huì)有一個(gè)catch塊被執(zhí)行。
對(duì)于非運(yùn)行時(shí)異常(checked exception),必須要對(duì)其進(jìn)行處理,否則無(wú)法通過(guò)編譯。
處理方式有兩種:
1.使用try..catch..finally進(jìn)行捕獲;
2.在產(chǎn)生異常的方法聲明后面寫(xiě)上throws 某一個(gè)Exception類型,如throws Exception,將異常拋出到外面一層去。
對(duì)于運(yùn)行時(shí)異常(runtime exception),可以對(duì)其進(jìn)行處理,也可以不處理。推薦不對(duì)運(yùn)行時(shí)異常進(jìn)行處理。
擴(kuò)展:錯(cuò)誤和異常的區(qū)別(Error vs Exception)
1).java.lang.Error: Throwable的子類,用于標(biāo)記嚴(yán)重錯(cuò)誤。合理的應(yīng)用程序不應(yīng)該去try/catch這種錯(cuò)誤。絕大多數(shù)的錯(cuò)誤都是非正常的,就根本不該出現(xiàn)的。
java.lang.Exception: Throwable的子類,用于指示一種合理的程序想去catch的條件。即它僅僅是一種程序運(yùn)行條件,而非嚴(yán)重錯(cuò)誤,并且鼓勵(lì)用戶程序去catch它。
**2).Error和RuntimeException **及其子類都是未檢查的異常(unchecked exceptions),而所有其他的Exception類都是檢查了的異常(checked exceptions).
checked exceptions: 通常是從一個(gè)可以恢復(fù)的程序中拋出來(lái)的,并且最好能夠從這種異常中使用程序恢復(fù)。比如FileNotFoundException, ParseException等。檢查了的異常發(fā)生在編譯階段,必須要使用try…catch(或者throws)否則編譯不通過(guò)。
**unchecked exceptions: **通常是如果一切正常的話本不該發(fā)生的異常,但是的確發(fā)生了。發(fā)生在運(yùn)行期,具有不確定性,主要是由于程序的邏輯問(wèn)題所引起的。比如ArrayIndexOutOfBoundException, ClassCastException等。從語(yǔ)言本身的角度講,程序不該去catch這類異常,雖然能夠從諸如RuntimeException這樣的異常中catch并恢復(fù),但是并不鼓勵(lì)終端程序員這么做,因?yàn)橥耆珱](méi)要必要。因?yàn)檫@類錯(cuò)誤本身就是bug,應(yīng)該被修復(fù),出現(xiàn)此類錯(cuò)誤時(shí)程序就應(yīng)該立即停止執(zhí)行。 因此,面對(duì)Errors和unchecked exceptions應(yīng)該讓程序自動(dòng)終止執(zhí)行,程序員不該做諸如try/catch這樣的事情,而是應(yīng)該查明原因,修改代碼邏輯。
RuntimeException:RuntimeException體系包括錯(cuò)誤的類型轉(zhuǎn)換、數(shù)組越界訪問(wèn)和試圖訪問(wèn)空指針等等。
處理RuntimeException的原則是:如果出現(xiàn) RuntimeException,那么一定是程序員的錯(cuò)誤。例如,可以通過(guò)檢查數(shù)組下標(biāo)和數(shù)組邊界來(lái)避免數(shù)組越界訪問(wèn)異常。其他(IOException等等)checked異常一般是外部錯(cuò)誤,例如試圖從文件尾后讀取數(shù)據(jù)等,這并不是程序本身的錯(cuò)誤,而是在應(yīng)用環(huán)境中出現(xiàn)的外部錯(cuò)誤。
以上這篇Java_異常類(錯(cuò)誤和異常,兩者的區(qū)別介紹) 就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
常見(jiàn)的異常;
ArrayIndexOutOfBoundsException 數(shù)組下標(biāo)越界異常,
ArithmaticException 算數(shù)異常 如除數(shù)為零
NullPointerException 空指針異常
IllegalArgumentException 不合法參數(shù)異常

最后編輯于
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 對(duì)象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法,而不是構(gòu)造函數(shù)創(chuàng)建對(duì)象:僅僅是創(chuàng)建對(duì)象的方法,并非Fa...
    孫小磊閱讀 2,182評(píng)論 0 3
  • Java異常 異常指不期而至的各種狀況,如:文件找不到、網(wǎng)絡(luò)連接失敗、非法參數(shù)等。異常是一個(gè)事件,它發(fā)生在程序運(yùn)行...
    java部落閱讀 3,613評(píng)論 1 13
  • 轉(zhuǎn)載文章,僅用于個(gè)人查閱和學(xué)習(xí)。原文鏈接:http://www.itdecent.cn/p/15872cba211...
    Jayden_Cao閱讀 1,291評(píng)論 0 1
  • 有彈幕說(shuō)看到心音和夕神湊在一起看模擬太展示出的景象很可愛(ài)www。
    入夢(mèng)安眠閱讀 184評(píng)論 0 0
  • 去青海出游,是我生平第一次坐飛機(jī),心情是無(wú)比激動(dòng)的!辦理登機(jī)牌,過(guò)安檢,登機(jī),一切都是那么的新鮮。起飛前,同行的伙...
    曹小暖閱讀 282評(píng)論 1 3

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