Java語(yǔ)言要求java程序中所有拋出(throw)的異常都必須是從Throwable派生而來(lái)。對(duì)于java程序員而言,它一般只需要在它的頂級(jí)函數(shù)中catch(Exception ex)就可以捕獲出所有的異常對(duì)象。
所有異常對(duì)象的根基類是 Throwable ,Throwable從Object直接繼承而來(lái)(這是java系統(tǒng)所強(qiáng)制要求的),并且它實(shí)現(xiàn)了 Serializable接口(這為所有的異常對(duì)象都能夠輕松跨越Java組件系統(tǒng)做好了最充分的物質(zhì)準(zhǔn)備)。
從Throwable直接派生出的異常類有Exception和Error 。
Exception 和從它派生而來(lái)的所有異常都是應(yīng)用程序能夠catch到的,并且可以進(jìn)行異常錯(cuò)誤恢復(fù)處理的異常類型。
而Error則表示Java系統(tǒng)中出現(xiàn)了一個(gè)非常嚴(yán)重的異常錯(cuò)誤,并且這個(gè)錯(cuò)誤可能是應(yīng)用程序所不能恢復(fù)的。
RuntimeException 表示這種異常是否出現(xiàn)經(jīng)常不可預(yù)料,出現(xiàn)了的話,就中止處理。
Error 一般表示無(wú)法恢復(fù)的故障,也就是你再試一次依然會(huì)出錯(cuò),比如 OutOfMemoryError,試多少次很大概率出錯(cuò)的。
Exception 則表示一般性的異常,而且這種異常是設(shè)計(jì)中早已考慮到很常見(jiàn)的錯(cuò)誤,并且一定要求在設(shè)計(jì)中說(shuō)明如果處理這種異常。
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ò)。
最后編輯于 :
?著作權(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ù)。