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

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

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

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

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

今天我們來聊聊Java里的一個小妖精,那就是異常。

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

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

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

簡而言之,Java異常處理就是能讓我們主動迎擊可能到來的異常,并將它們以圓潤的方式處理掉。

還是先來看個小栗子,看看java里的異常長什么樣。

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

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

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

代碼里將0作為了分母,因此程序會發(fā)生算術(shù)異常,拋出一個異常后,如果沒有任何處理,默認(rèn)會終止程序,所以后面的打印內(nèi)容并沒有輸出。在異常內(nèi)容里,有說明異常類型為:java.lang.ArithmeticException,也就是算術(shù)異常,后面跟著的是異常原因: / by zero,也就是說異常出現(xiàn)的原因是將0作為了分母,而且后面還有堆棧信息,指出了異常拋出的位置是在com.frank.chapter16.main.Test.main這個包下,Test類的第11行(這個行數(shù)如果跟你想的不一樣,不要在意,因為我的代碼開始之前還有一些不可描述的說明信息),因為只有一次方法調(diào)用,所以沒有很長的堆棧信息,看起來也很簡潔明了。

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

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

如何使用異常處理

我們來把上面那個栗子改改:

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)勢,現(xiàn)在即使拋出了異常,程序也繼續(xù)運(yùn)行了。異常就像是一頭野獸,但你一旦捕獲它,馴服它,就可以為你所用,為所欲為了。

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

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

當(dāng)然,try...finally這樣的搭配也是ok的,需要注意的是,當(dāng)try語句中發(fā)生了異常之后,在發(fā)生異常處之后的代碼將不會再執(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語句塊是可以同時使用多個的,第一個catch語句塊捕獲的是空指針異常,但由于拋出的是算術(shù)異常,所以沒有捕獲住,但被第二個catch捕獲到了,所以第二個catch語句塊中的代碼執(zhí)行了。異常匹配是按照從上到下的順序進(jìn)行匹配的,最后才執(zhí)行finally中的代碼塊。關(guān)于try...catch...finally,還有一個很有趣的return問題,如果三個語句塊里都有return,最終返回結(jié)果會是怎樣呢?www.jb51.net/article/112427.htm這里做了詳細(xì)的說明,有興趣的話可以看一看

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

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

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

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

輸出如下:

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

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

在throw異常的時候,可以加上拋出異常的原因,這樣可以更方便定位問題所在,當(dāng)然,一般來說不會像栗子中這樣使用的,這里只是為了簡單起見。

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

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

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
高清一区二区三区av| 亚洲精品系列| 美女久久久久久 | 欧美特黄视频| 精品日韩视频| 亚洲成人一区在线观看| 久久男女视频| 一区二区亚洲精品| 老牛影视一区二区三区| 蜜臀av一区二区三区| 伊人www22综合色| 日本欧美韩国一区三区| 欧美xxxx性| 中文字幕在线官网| 久久精品国产www456c0m| 亚洲欧美一区在线| 蜜乳av另类精品一区二区| 亚洲tv在线| 国产精品15p| 国产精品国产一区| 日本久久成人网| 在线一区欧美| 69堂精品视频在线播放| 麻豆久久一区二区| 在线观看精品| 亚洲永久字幕| 日韩av中文字幕一区| 国产精品白丝av嫩草影院| 97精品国产福利一区二区三区| 亚洲手机视频| 日韩精品久久久久久久软件91| 精品一区视频| 不卡一区综合视频| 亚洲精品麻豆| 精品国产亚洲日本| 欧美在线观看视频一区| 亚洲精品观看| 美女免费视频一区| 久久久五月天| 亚洲2区在线| 97精品一区二区| 国产免费成人| 国产精品高潮呻吟久久久久| 久久免费黄色| 91精品视频一区二区| 久久91导航| 亚洲日韩中文字幕一区| 福利一区和二区| 视频一区在线视频| 国产在线一区不卡| 99亚洲视频| 精品一区视频| 亚洲综合专区| 日韩国产一区二区| 日本不卡视频一二三区| 日韩精品1区| 日韩精品一区二区三区中文字幕| 天堂av在线| 欧美精品中文| 一区三区视频| 精品国产欧美日韩一区二区三区| 在线国产一区二区| 欧美极品中文字幕| 另类国产ts人妖高潮视频| 精品美女在线视频| 免费在线观看视频一区| 色一区二区三区四区| 日韩欧美另类中文字幕| 日本免费久久| 国产精品巨作av| 老司机久久99久久精品播放免费| 91欧美日韩| 欧美日韩中文| 免费日韩av片| 综合日韩av| 国产乱码精品一区二区亚洲| 99视频一区| 视频福利一区| 国产精品一区二区免费福利视频 | 国产成人精品福利| 日本亚洲最大的色成网站www| 一区二区三区视频免费观看| 麻豆成人av在线| 日韩高清三区| 亚洲一区二区免费看| se01亚洲视频| 久久精品一区二区国产| 五月亚洲婷婷 | 亚洲精品乱码| 99久久婷婷这里只有精品| 久久久久亚洲精品中文字幕| 91伊人久久| 亚洲久久在线| 亚洲欧美日韩专区| 国产一区久久| 久久影院午夜精品| 久久精品网址| 国产精品免费不| 69堂精品视频在线播放| 日韩制服丝袜av| 黄色免费成人| 亚洲精品91| 久久免费高清| 久久美女性网| 青青青免费在线视频| 国产欧美亚洲一区| 亚洲精品成人一区| 丝袜a∨在线一区二区三区不卡| 欧美日韩在线二区| 久久精品国语| 丝袜av一区| 欧美日韩一区二区综合| 亚洲天堂1区| 成人日韩在线观看| 亚洲成a人片| 久久久人人人| 国产99久久久国产精品成人免费| 久久精品亚洲人成影院 | 日韩不卡免费高清视频| 97精品中文字幕| 中文字幕在线高清| 性感美女一区二区在线观看| 成人看片网站| 欧美精品一二| 日韩视频一区二区三区在线播放免费观看| 四虎影视精品| 亚洲午夜视频| av成人国产| 亚洲伊人精品酒店| 日韩欧美激情| 国产乱码精品一区二区三区四区| 国产伦理一区| 久久av影院| 国产一区不卡| 日韩av一级| 国产亚洲永久域名| 中文字幕一区二区精品区| 视频精品一区| 久久不见久久见中文字幕免费 | 日韩一区二区三区在线看| 91精品啪在线观看国产爱臀| 麻豆一区二区三| 午夜精品成人av| 午夜欧美精品| 久久亚洲欧美| 国产三级精品三级在线观看国产| 美女视频黄 久久| 久久精品官网| 亚洲毛片一区| 久久尤物视频| 91精品推荐| 一区二区国产在线观看| 国产精品尤物| 91看片一区| 午夜亚洲一区| 国产精品亚洲四区在线观看 | 欧美日韩一区二区三区四区在线观看 | 99久精品视频在线观看视频| 99在线精品免费视频九九视| 日本va欧美va瓶| 欧美精品aa| 亚洲天堂一区二区| 爽好多水快深点欧美视频| 国产精品一区二区三区美女 | 亚洲深夜福利| 国产欧美欧美| 日韩精品免费一区二区在线观看| 蜜臀久久99精品久久久久久9| 国产精品久久久久久模特| 欧美精品日日操| 蜜桃av一区二区在线观看| 日韩福利视频导航| 国产伦久视频在线观看| 亚洲欧美激情诱惑| 欧美激情福利| 伊人成人网在线看| 国产精品一站二站| 久久人人97超碰国产公开结果| 亚洲毛片一区| 鲁鲁在线中文| 婷婷综合一区| 天堂中文在线播放| 色综合视频一区二区三区日韩| 成人在线视频区| 日韩中文字幕亚洲一区二区va在线| 欧美激情91| 黑丝一区二区三区| 麻豆传媒一区二区三区| 亚洲一区日韩在线| 精品一区二区三区四区五区| 好看不卡的中文字幕| 欧美国产三级| 免费人成精品欧美精品| 福利一区在线| 亚洲精品亚洲人成在线观看| 福利在线免费视频| 日韩欧美中文字幕在线视频| 999久久久国产精品| 国产精品最新| 蜜臀精品久久久久久蜜臀|