Java異常處理機(jī)制(try-catch-finally|try-with-resources) —— 一文熟知異常處理體系

1.繼承結(jié)構(gòu)

Java所有的異常類都直接或間接繼承Throwable


Throwable.png

2.三種類型異常

1.系統(tǒng)錯(cuò)誤
由Java虛擬機(jī)拋出,用Error類表示
2.異常
用Exception類表示邀泉,描述的是由程序和外部環(huán)境所引起的錯(cuò)誤其徙,可以被程序捕獲和處理
3.運(yùn)行時(shí)異常
用RuntimeException類表示胚迫,描述的是程序的設(shè)計(jì)錯(cuò)誤

3.免檢異常和必檢異常

1.RuntimeException、Error及其子類都為免檢異常
2.所有其他異常都是必檢異常唾那,即編譯器會(huì)強(qiáng)制程序員檢查并通過(guò)try-catch塊處理它們访锻,或者在方法頭部拋出

4.異常處理的方式

1.聲明異常:throws Exception
2.拋出異常:throw new Exception
3.捕獲異常:try{...}catch(Exception e){}

5.關(guān)于finally

1.對(duì)于沒(méi)有垃圾回收和析構(gòu)函數(shù)自動(dòng)調(diào)用機(jī)制的語(yǔ)言來(lái)說(shuō),finally 非常重要闹获。它能使程序員保證:無(wú)論 try 塊里發(fā)生了什么期犬,內(nèi)存總能得到釋放。但 Java 有垃圾回收機(jī)制避诽,所以內(nèi)存釋放不再是問(wèn)題龟虎。
2.當(dāng)把除內(nèi)存以外的資源恢復(fù)到它們的初始狀態(tài)時(shí),需要使用finally子句沙庐,如打開(kāi)的文件或網(wǎng)絡(luò)連接等鲤妥。
3.假如在finally子句中重新拋出異常或執(zhí)行return語(yǔ)句轨功,可能會(huì)導(dǎo)致異常丟失旭斥。
4.正常情況下,finally子句一定會(huì)執(zhí)行古涧。
5.finally子句不執(zhí)行的情況
(1)在try之前已經(jīng)結(jié)束程序或拋出異常
(2)在try或catch中執(zhí)行System.exit(0)
(3)其他在執(zhí)行到try時(shí)發(fā)生斷電或死機(jī)等極端情況
6.假如try...catch...finally中有return垂券,代碼會(huì)如何執(zhí)行?
(1)即使try...catch...中有return語(yǔ)句,finally仍會(huì)執(zhí)行
(2)finally執(zhí)行時(shí)機(jī):return執(zhí)行之后菇爪,return返回之前執(zhí)行
(3)如果在finally中修改了返回值算芯,則返回的結(jié)果會(huì)變嗎?
對(duì)于基本數(shù)據(jù)類型來(lái)說(shuō)是不會(huì)改變返回值的
對(duì)于對(duì)象來(lái)說(shuō)凳宙,修改的是對(duì)象上的內(nèi)容熙揍,是會(huì)改變返回值的
(4)如果在finally子句中執(zhí)行不同于try...catch...中的return語(yǔ)句,則返回值一定會(huì)被改變

6.關(guān)于try-with-resources

1.語(yǔ)法:try("創(chuàng)建對(duì)象") {...} catch(IOException e) {...}
2.try括號(hào)內(nèi)的部分稱為資源規(guī)范頭(resource specification header)
3.無(wú)論何時(shí)退出try塊(正呈仙或異常)届囚,都會(huì)執(zhí)行與finally子句等價(jià)的代碼
4.關(guān)閉資源的順序與創(chuàng)建順序相反
5.如果在try()中發(fā)生異常,在異常之前的代碼會(huì)正常執(zhí)行是尖,正常釋放資源意系;之后的代碼不會(huì)執(zhí)行,也就不會(huì)有資源的釋放
6.在try()小括號(hào)中創(chuàng)建的對(duì)象饺汹,如果發(fā)生了異常蛔添,會(huì)自動(dòng)調(diào)用close()釋放資源,并且是以創(chuàng)建對(duì)象相反的順序釋放資源
7.try(){}大括號(hào)中創(chuàng)建的對(duì)象兜辞,如果發(fā)生了異常迎瞧,是不會(huì)自動(dòng)釋放資源的

7.總結(jié)

1.try-with-resources處理異常的方式要優(yōu)于try-catch-finally這種方式,建議使用try-with-resources逸吵。
2.測(cè)試finally沒(méi)有貼代碼凶硅,覺(jué)得比較簡(jiǎn)單,覺(jué)得有需要的讀者可以評(píng)論留言胁塞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咏尝,一起剝皮案震驚了整個(gè)濱河市压语,隨后出現(xiàn)的幾起案子啸罢,更是在濱河造成了極大的恐慌,老刑警劉巖胎食,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扰才,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厕怜,警方通過(guò)查閱死者的電腦和手機(jī)衩匣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)粥航,“玉大人琅捏,你說(shuō)我怎么就攤上這事〉萑福” “怎么了柄延?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)缀程。 經(jīng)常有香客問(wèn)我搜吧,道長(zhǎng)市俊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任滤奈,我火速辦了婚禮摆昧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜒程。我一直安慰自己绅你,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布昭躺。 她就那樣靜靜地躺著勇吊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窍仰。 梳的紋絲不亂的頭發(fā)上汉规,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音驹吮,去河邊找鬼针史。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碟狞,可吹牛的內(nèi)容都是我干的啄枕。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼族沃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼频祝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起脆淹,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤常空,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后盖溺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體漓糙,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年烘嘱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昆禽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蝇庭,死狀恐怖醉鳖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情哮内,我是刑警寧澤盗棵,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響漾根,放射性物質(zhì)發(fā)生泄漏泰涂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一辐怕、第九天 我趴在偏房一處隱蔽的房頂上張望逼蒙。 院中可真熱鬧,春花似錦寄疏、人聲如沸是牢。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)驳棱。三九已至,卻和暖如春农曲,著一層夾襖步出監(jiān)牢的瞬間社搅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工乳规, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留形葬,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓暮的,卻偏偏與公主長(zhǎng)得像笙以,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冻辩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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