Exception和Error有什么區(qū)別

Java異常.PNG

簡(jiǎn)述Java異常機(jī)制的優(yōu)點(diǎn)

Java語(yǔ)言在設(shè)計(jì)之初就提供了相對(duì)完善的異常處理機(jī)制免糕,這也是Java的優(yōu)勢(shì)之一长搀;因?yàn)檫@種機(jī)制大大降低了編寫和維護(hù)可靠程序的門檻马绝。

Exception和Error的區(qū)別

  • Exception和Error都繼承了Throwable類嫂拴,在Java中只有Throwable類型的實(shí)例才會(huì)被拋出(throw)或者捕獲(catch),它是異常處理機(jī)制的基本組成類型

  • Exception和Error體現(xiàn)了Java平臺(tái)設(shè)計(jì)者對(duì)不同異常情況的分類。Exception是程序正常運(yùn)行中卡辰,可以預(yù)料的意外情況你踩。可能并且應(yīng)該被捕獲舅踪,進(jìn)行相應(yīng)的處理。

  • Error是指在正常情況下,不大可能出現(xiàn)的情況瞧甩,絕大部分的Error都會(huì)導(dǎo)致程序處于非正常的,不可恢復(fù)的狀 態(tài)弥鹦。既然是非正常情況肚逸,所以不便于也不需要捕獲,比如OutOfMemoryError之類彬坏,都是Error的子類朦促。

  • Exception又分為可檢查(checked)異常和不檢查(unchecked)異常,可檢查異常在源代碼里必須顯示地進(jìn)行捕獲處理栓始,這是編譯期檢查的一部分务冕。前面我介紹的不可查的Error,是Throwable不是Exception幻赚。

  • 不檢查異常(運(yùn)行時(shí)異常)類似NullPointerException禀忆、ArrayIndexOutOfBoundsException之類,通常是可以編碼避免的錯(cuò)誤落恼。

Exception和Error的擴(kuò)展

  • 理解Throwable箩退、Exception、Error的設(shè)計(jì)和分類佳谦。比如掌握那些應(yīng)用最為廣泛的子類乏德,以及如何自定義異常等。![ClassNotFoundException和NoClassDefFoundError的區(qū)別][(https://my.oschina.net/jasonultimate/blog/166932)
  • 理解Java語(yǔ)言中操作Throwable的元素和實(shí)踐吠昭。
//try-with-resources的一種實(shí)現(xiàn)
 public static void main(String [] args){
        try(BufferedReader br = new BufferedReader(new Reader() {
            @Override
            public void close() throws IOException {

            }

            @Override
            public int read(char[] chars, int i, int i1) throws IOException {
                return 0;
            }
        }); BufferedWriter bw = new BufferedWriter(new Writer() {
            @Override
            public void close() throws IOException {

            }

            @Override
            public void flush() throws IOException {

            }

            @Override
            public void write(char[] chars, int i, int i1) throws IOException {

            }
        })){
            br.close();
            bw.close();
        }catch (IOException e){
            e.printStackTrace();
        }
    }
        try{
            Thread.sleep(1000L);
        } catch (Exception e) {
            e.printStackTrace();
        }

上面這段代碼違反了異常處理的兩個(gè)基本原則喊括。

  • 盡量不要捕獲類似Exception這樣的通用異常,而是應(yīng)該捕獲特定的異常矢棚。在這里Thread.sleep拋出的是InterruptedException郑什。

  • 不要生吞(swallow)異常,這是異常處理中要特別注意的事情蒲肋,因?yàn)楹芸赡軙?huì)導(dǎo)致非常難以診斷的詭異情況蘑拯。

  • try-catch代碼段會(huì)產(chǎn)生額外的性能開銷钝满,或者換個(gè)角度說,它往往會(huì)影響JVM對(duì)代碼進(jìn)行優(yōu)化申窘,盡量不要一個(gè)大的try包住整段代碼弯蚜;Java每實(shí)例化一個(gè)Exception,都會(huì)對(duì)當(dāng)時(shí)的棧進(jìn)行快照,這是一個(gè)相對(duì)比較重的操作剃法。如果發(fā)生的非常頻繁碎捺,這個(gè)開銷可就不能被忽略了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末贷洲,一起剝皮案震驚了整個(gè)濱河市收厨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌优构,老刑警劉巖诵叁,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钦椭,居然都是意外死亡拧额,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門彪腔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侥锦,“玉大人,你說我怎么就攤上這事漫仆。” “怎么了泪幌?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵盲厌,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我祸泪,道長(zhǎng)吗浩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任没隘,我火速辦了婚禮懂扼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘右蒲。我一直安慰自己阀湿,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布瑰妄。 她就那樣靜靜地躺著陷嘴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪间坐。 梳的紋絲不亂的頭發(fā)上灾挨,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天邑退,我揣著相機(jī)與錄音,去河邊找鬼劳澄。 笑死地技,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秒拔。 我是一名探鬼主播莫矗,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼溯警!你這毒婦竟也來了趣苏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梯轻,失蹤者是張志新(化名)和其女友劉穎食磕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喳挑,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡彬伦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了伊诵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片单绑。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖曹宴,靈堂內(nèi)的尸體忽然破棺而出搂橙,到底是詐尸還是另有隱情,我是刑警寧澤笛坦,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布区转,位于F島的核電站,受9級(jí)特大地震影響版扩,放射性物質(zhì)發(fā)生泄漏废离。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一礁芦、第九天 我趴在偏房一處隱蔽的房頂上張望蜻韭。 院中可真熱鬧,春花似錦柿扣、人聲如沸肖方。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窥妇。三九已至,卻和暖如春娩践,著一層夾襖步出監(jiān)牢的瞬間活翩,已是汗流浹背烹骨。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留材泄,地道東北人沮焕。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拉宗,于是被迫代替她去往敵國(guó)和親峦树。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 八旦事、深入理解java異常處理機(jī)制 引子try…catch…finally恐怕是大家再熟悉不過的語(yǔ)句了魁巩, 你的答案是...
    壹點(diǎn)零閱讀 1,578評(píng)論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)姐浮,斷路器谷遂,智...
    卡卡羅2017閱讀 134,704評(píng)論 18 139
  • 我是隨筆記,你們隨性看 <一> 熱戀的愛情是顆糖 大學(xué)舍友下鋪兼同位卖鲤,小川肾扰。她的男友小森。 川和森是高中同學(xué)蛋逾,高二...
    胡一自傲閱讀 158評(píng)論 0 0
  • 下班來德基逛逛集晚,不知道吃啥,原來打算去7樓区匣,7樓人滿為患偷拔,無(wú)奈吃飯的點(diǎn)到處排隊(duì),都是等座亏钩,大眾點(diǎn)評(píng)查了一下莲绰,南京食...
    楊我閱讀 208評(píng)論 0 0
  • 國(guó)慶去沈陽(yáng)看故宮,沒有人山人海的壯觀場(chǎng)面铸屉,不用像北京的故宮博物院那樣去看人頭钉蒲。這里的風(fēng)格和北京故宮一樣切端,有很多建筑...
    夏云夢(mèng)閱讀 431評(píng)論 1 4