日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

帶你了解Java中的異常處理(上)

瀏覽:164日期:2022-08-27 08:21:30

當(dāng)當(dāng)當(dāng)當(dāng)當(dāng)當(dāng),各位看官,好久不見(jiàn),甚是想念。

今天我們來(lái)聊聊Java里的一個(gè)小妖精,那就是異常。

什么是異常?什么是異常處理?

異常嘛,顧名思義就是不正常,(逃),是Java程序運(yùn)行時(shí),發(fā)生的預(yù)料之外的事情,它阻止了程序按照程序員的預(yù)期正常執(zhí)行。

異常處理,應(yīng)該說(shuō)異常處理機(jī)制,就是專門(mén)用來(lái)制服這個(gè)小妖精的法寶。Java中的異常處理機(jī)制能讓程序在異常發(fā)生時(shí),按照代碼的預(yù)先設(shè)定的異常處理邏輯,針對(duì)性地處理異常,讓程序盡最大可能恢復(fù)正常并繼續(xù)執(zhí)行,且保持代碼的清晰。

簡(jiǎn)而言之,Java異常處理就是能讓我們主動(dòng)迎擊可能到來(lái)的異常,并將它們以圓潤(rùn)的方式處理掉。

還是先來(lái)看個(gè)小栗子,看看java里的異常長(zhǎng)什么樣。

public class Test { public static void main(String args[]){ int i = 0 / 0; System.out.println('i = ' + i); }}

帶你了解Java中的異常處理(上)

別慌別慌,不要看到紅色提示就內(nèi)心崩潰只想關(guān)掉IDE,來(lái),抓緊我的手,帶你看清“異常”這個(gè)磨人的小妖精的真面目(滑稽)。

代碼里將0作為了分母,因此程序會(huì)發(fā)生算術(shù)異常,拋出一個(gè)異常后,如果沒(méi)有任何處理,默認(rèn)會(huì)終止程序,所以后面的打印內(nèi)容并沒(méi)有輸出。在異常內(nèi)容里,有說(shuō)明異常類型為:java.lang.ArithmeticException,也就是算術(shù)異常,后面跟著的是異常原因: / by zero,也就是說(shuō)異常出現(xiàn)的原因是將0作為了分母,而且后面還有堆棧信息,指出了異常拋出的位置是在com.frank.chapter16.main.Test.main這個(gè)包下,Test類的第11行(這個(gè)行數(shù)如果跟你想的不一樣,不要在意,因?yàn)槲业拇a開(kāi)始之前還有一些不可描述的說(shuō)明信息),因?yàn)橹挥幸淮畏椒ㄕ{(diào)用,所以沒(méi)有很長(zhǎng)的堆棧信息,看起來(lái)也很簡(jiǎn)潔明了。

所以你看,其實(shí)異常也沒(méi)那么可怕吧,不僅給了異常原因,還告訴了你這個(gè)bug是出在第幾行,所以好好利用它,可以幫助你寫(xiě)出更難以發(fā)現(xiàn)的bug,呸,說(shuō)錯(cuò)了,可以幫助你更容易找到bug(手動(dòng)滑稽)。

如果不希望拋出異常后程序就結(jié)束,而是希望它繼續(xù)運(yùn)行呢?那么就捕獲它。

如何使用異常處理

我們來(lái)把上面那個(gè)栗子改改:

public class Test { public static void main(String args[]){ try{ int i = 0 / 0; }catch (Exception e){ System.out.println('好像發(fā)生異常了,但是我不管,我還要繼續(xù)運(yùn)行'); } System.out.println('運(yùn)行完畢!'); }}

輸出如下:

好像發(fā)生異常了,但是我不管,我還要繼續(xù)運(yùn)行運(yùn)行完畢!

好的,很強(qiáng)勢(shì),現(xiàn)在即使拋出了異常,程序也繼續(xù)運(yùn)行了。異常就像是一頭野獸,但你一旦捕獲它,馴服它,就可以為你所用,為所欲為了。

try...catch...是常用的異常處理搭配,如果在try語(yǔ)句塊中發(fā)生了異常,如果剛好這個(gè)異常被捕獲到了,那么會(huì)直接跳到catch語(yǔ)句塊中,執(zhí)行catch語(yǔ)句中的代碼,像上面的栗子里,因?yàn)閷?duì)Exception類進(jìn)行了捕獲處理,所以當(dāng)它的子類異常java.lang.ArithmeticException被拋出來(lái)的時(shí)候,也能捕獲它。關(guān)于Exception類的結(jié)構(gòu)層次關(guān)系,后面再做詳細(xì)介紹。

還有另外一種搭配方式,那就是try...catch...finally,finally語(yǔ)句塊比catch要強(qiáng)勢(shì)的多,前面說(shuō)了catch語(yǔ)句塊必須要捕獲到了特定的Exception才會(huì)執(zhí)行里面的代碼,如果catch的是ArithmeticException但是拋出的卻是空指針異常,那就不會(huì)被捕獲了,異常也就逃之夭夭了。這個(gè)時(shí)候,finally的優(yōu)勢(shì)就展示出來(lái)了,不管拋出什么樣的異常,也不管是否拋出了異常,finally中的代碼都會(huì)被執(zhí)行。所以一般的用法是在finally語(yǔ)句塊里釋放掉那些需要被釋放的資源,如socket連接,關(guān)閉io流,關(guān)閉數(shù)據(jù)庫(kù)連接等等。也就是說(shuō)一般在finally中收拾try中拋出的爛攤子,心疼一秒finally,果然能者多勞啊。

當(dāng)然,try...finally這樣的搭配也是ok的,需要注意的是,當(dāng)try語(yǔ)句中發(fā)生了異常之后,在發(fā)生異常處之后的代碼將不會(huì)再執(zhí)行,而是跳到相應(yīng)的catchu或者finally中去。

public class Test { public static void main(String args[]){ try{ int i = 0 / 0; }catch (NullPointerException e) { System.out.println('這里捕獲空指針異常'); }catch (ArithmeticException e){ System.out.println('這里捕獲算術(shù)異常'); }finally { System.out.println('這里是finally'); } System.out.println('運(yùn)行完畢!'); }}

 輸出如下:

這里捕獲算術(shù)異常這里是finally運(yùn)行完畢!

在上面的代碼中,catch語(yǔ)句塊是可以同時(shí)使用多個(gè)的,第一個(gè)catch語(yǔ)句塊捕獲的是空指針異常,但由于拋出的是算術(shù)異常,所以沒(méi)有捕獲住,但被第二個(gè)catch捕獲到了,所以第二個(gè)catch語(yǔ)句塊中的代碼執(zhí)行了。異常匹配是按照從上到下的順序進(jìn)行匹配的,最后才執(zhí)行finally中的代碼塊。關(guān)于try...catch...finally,還有一個(gè)很有趣的return問(wèn)題,如果三個(gè)語(yǔ)句塊里都有return,最終返回結(jié)果會(huì)是怎樣呢?www.jb51.net/article/112427.htm這里做了詳細(xì)的說(shuō)明,有興趣的話可以看一看

絕大多數(shù)情況下,finally中的代碼都是會(huì)被執(zhí)行的,只有一種情況下,finally中的代碼不會(huì)被執(zhí)行,那就是在try語(yǔ)句塊中結(jié)束掉了虛擬機(jī)(如:使用 System.exit(0); )。

關(guān)于異常,還有一個(gè)關(guān)鍵字需要介紹,那就是throw,使用throw可以主動(dòng)拋出一個(gè)異常。看到這你也許會(huì)一臉懵逼,主動(dòng)拋出???嫌異常不夠多,湊熱鬧不嫌事大??別急別急,中間一定有什么誤會(huì),把刀放下,有話好好說(shuō)。

throw關(guān)鍵字確實(shí)是用來(lái)拋出異常的,你可以這樣使用:

public class Test { public static void main(String args[]){ try{ throw new NullPointerException('聽(tīng)說(shuō)你很閑,給你拋個(gè)異常。'); }catch (NullPointerException e) { System.out.println('這里捕獲空指針異常,提示內(nèi)容:' + e.getMessage()); e.printStackTrace(); } }}

輸出如下:

這里捕獲空指針異常,提示內(nèi)容:聽(tīng)說(shuō)你很閑,給你拋個(gè)異常。java.lang.NullPointerException: 聽(tīng)說(shuō)你很閑,給你拋個(gè)異常。at com.frank.chapter16.main.Test.main(Test.java:11)

用throw關(guān)鍵字可以拋出任意類型的異常,當(dāng)然,你想的話,還有拋Error,至于什么是Error,已經(jīng)跟Exception的關(guān)系,將在下一篇里進(jìn)行講解。暫時(shí)不用深究。

在throw異常的時(shí)候,可以加上拋出異常的原因,這樣可以更方便定位問(wèn)題所在,當(dāng)然,一般來(lái)說(shuō)不會(huì)像栗子中這樣使用的,這里只是為了簡(jiǎn)單起見(jiàn)。

到此為止,異常的上半篇已經(jīng)講解完畢,在這一篇里,說(shuō)明了什么是異常,什么是異常處理,以及如何使用異常處理機(jī)制。相信大家對(duì)這個(gè)小妖精有了初步的認(rèn)識(shí),下一篇中,將會(huì)講解Exception家族都有哪些成員,如何使用自定義異常,已經(jīng)異常處理的實(shí)際使用中的正確姿勢(shì)。歡迎大家繼續(xù)關(guān)注,之后計(jì)劃每周兩篇以上的更新,如果有講解遺漏或者不好的地方,歡迎大家及時(shí)指出,共同進(jìn)步!

以上就是帶你了解Java中的異常處理(上)的詳細(xì)內(nèi)容,更多關(guān)于Java異常處理的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产一区观看| 亚洲精品人人| 国产日韩免费| 日本成人在线一区| 日韩福利视频导航| 国产亚洲欧美日韩在线观看一区二区| 精品一区二区三区亚洲 | 国产精品传媒麻豆hd| 在线免费观看亚洲| 日韩欧美高清一区二区三区| 日韩不卡一区二区| 你懂的网址国产 欧美| 色欧美自拍视频| 亚洲成人二区| 中文日韩欧美| 日本中文字幕一区二区| 国产麻豆一区二区三区 | 四虎4545www国产精品| 97精品中文字幕| 99精品综合| 亚洲a在线视频| 99视频一区| 91福利精品在线观看| 国产一区2区| 亚洲福利专区| 日韩精品中文字幕吗一区二区| 桃色一区二区| 免费精品国产的网站免费观看| 亚洲欧美专区| 日本不卡一区二区| 欧美极品一区二区三区| 午夜影院一区| 久久不射网站| 国产精品中文字幕制服诱惑| 欧美日韩视频网站| 综合亚洲视频| 国产精品久久久久久久久久10秀| 日本三级亚洲精品| 国产精品chinese| 久久久久久免费视频| 日本va欧美va瓶| 人人精品亚洲| 欧美亚洲三级| 92国产精品| 亚州精品视频| 五月天av在线| 日本欧美在线| www成人在线视频| 国产亚洲高清一区| 偷拍欧美精品| 国产一区三区在线播放| 日韩在线a电影| 在线一区av| 91精品丝袜国产高跟在线| 亚洲无线一线二线三线区别av| 麻豆视频在线看| 综合视频一区| 亚洲黄页一区| 国产精品蜜芽在线观看| 日韩福利视频网| 日韩中文字幕亚洲一区二区va在线 | 日韩高清中文字幕一区| 日韩欧美午夜| 精品国产一区二区三区2021| 日韩中文字幕| 妖精视频成人观看www| 国产精品精品| 久久影院一区二区三区| 石原莉奈在线亚洲三区| 日本亚州欧洲精品不卡| 亚洲精品婷婷| 久久国产精品色av免费看| 水蜜桃久久夜色精品一区的特点| av资源中文在线天堂| 久久久免费人体| 国产成人a视频高清在线观看| 亚洲韩日在线| 久久久久欧美精品| 久久国产欧美日韩精品| 国产三级一区| 色一区二区三区| 精品国产一区二区三区噜噜噜| 色爱综合av| 亚洲tv在线| 九色精品91| 精品一区av| 9色国产精品| 日韩av二区在线播放| 精品一区二区三区免费看| 国产精品s色| 精品国产亚洲一区二区在线观看| 午夜国产一区二区| 国产日产精品_国产精品毛片 | 国产综合婷婷| 中文不卡在线| 国产精品13p| 国产亚洲精aa在线看| 亚洲一区国产一区| 国产精品中文字幕制服诱惑| 欧美日韩国产在线观看网站| 国产中文欧美日韩在线| 国产图片一区| 久久99久久人婷婷精品综合| 欧美亚洲精品在线| 亚洲国产影院| 精品久久中文| 免费在线观看一区二区三区| 99亚洲精品| 色婷婷精品视频| 日本一区中文字幕| 国产美女高潮在线| 亚洲日韩视频| 在线亚洲观看| 好吊日精品视频| 老司机精品久久| 成人日韩精品| 蜜桃视频一区二区三区| 久久精品国产福利| 美女精品在线| 欧美亚洲自偷自偷| 福利视频一区| 日本国产精品| 国产午夜精品一区二区三区欧美| 国产欧美在线观看免费| 国产模特精品视频久久久久| 999在线观看精品免费不卡网站| 久久gogo国模啪啪裸体| 亚洲神马久久| 久久精品一区二区国产| 麻豆视频在线观看免费网站黄| 激情欧美日韩一区| 色狠狠一区二区三区| 精品丝袜久久| 欧美aa在线视频| 国产亚洲精aa在线看 | 麻豆精品新av中文字幕| 亚洲麻豆一区| 日韩精品亚洲一区二区三区免费| 日韩高清在线不卡| 久久av在线| 蜜臀a∨国产成人精品| 久久国产88| 亚洲精品第一| 国产日韩一区二区三免费高清 | 1024精品一区二区三区| 成人精品中文字幕| 日韩av首页| 欧洲激情综合| 亚洲精品亚洲人成在线观看| 欧美日韩在线精品一区二区三区激情综合| 久久中文精品| 九九九精品视频| 都市激情国产精品| 久久久久久黄| 蜜臀av性久久久久蜜臀aⅴ四虎| 狂野欧美性猛交xxxx| 国产精品日韩精品中文字幕| 日韩成人一级| 美女视频免费精品| 欧美成人基地 | 在线观看免费一区二区| 久久国产亚洲精品| 丝袜脚交一区二区| 欧美一区不卡| 秋霞影院一区二区三区| 在线看片不卡| 9色精品在线| 国产精品一区二区免费福利视频| 欧美sss在线视频| 国产主播一区| 蜜臀av一区二区在线免费观看| 中文在线免费视频| 最新日韩av| 久久xxx视频| 国产日韩专区| 精品精品久久| 综合国产精品| 国产在线观看www| 亚洲18在线| 日韩欧美一区免费| 久久大逼视频| 精品中文在线| 亚洲图片久久| 久久精品国产免费| 亚久久调教视频| 三上亚洲一区二区| 伊人久久亚洲| 中文字幕色婷婷在线视频| 亚洲免费成人av在线| 蜜臀国产一区| 国产精品jk白丝蜜臀av小说| 国产农村妇女精品一区二区| 国产精品宾馆| 日韩在线中文| 欧美a一区二区| 亚洲免费婷婷| 婷婷激情一区| 美女国产精品久久久| 日韩中文字幕av电影| 国产亚洲一区二区手机在线观看 |