日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java try catch_Java捕获异常

發(fā)布時間:2023/12/1 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java try catch_Java捕获异常 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家好,歡迎來到樂字節(jié)小樂的Java技術(shù)分享園地

在Java中,凡是可能拋出異常的語句,都可以用try ... catch捕獲。把可能發(fā)生異常的語句放在try { ... }中,然后使用catch捕獲對應(yīng)的Exception及其子類。

多catch語句

可以使用多個catch語句,每個catch分別捕獲對應(yīng)的Exception及其子類。JVM在捕獲到異常后,會從上到下匹配catch語句,匹配到某個catch后,執(zhí)行catch代碼塊,然后不再繼續(xù)匹配。

簡單地說就是:多個catch語句只有一個能被執(zhí)行。例如:

public static void main(String[] args) {try {process1();process2();process3();} catch (IOException e) {System.out.println(e);} catch (NumberFormatException e) {System.out.println(e);} }

存在多個catch的時候,catch的順序非常重要:子類必須寫在前面。例如:

public static void main(String[] args) {try {process1();process2();process3();} catch (IOException e) {System.out.println("IO error");} catch (UnsupportedEncodingException e) { // 永遠捕獲不到System.out.println("Bad encoding");} }

對于上面的代碼,UnsupportedEncodingException異常是永遠捕獲不到的,因為它是IOException的子類。當(dāng)拋出UnsupportedEncodingException異常時,會被catch (IOException e) { ... }捕獲并執(zhí)行。

因此,正確的寫法是把子類放到前面:

public static void main(String[] args) {try {process1();process2();process3();} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");} catch (IOException e) {System.out.println("IO error");} }

finally語句

無論是否有異常發(fā)生,如果我們都希望執(zhí)行一些語句,例如清理工作,怎么寫?

可以把執(zhí)行語句寫若干遍:正常執(zhí)行的放到try中,每個catch再寫一遍。例如:

public static void main(String[] args) {try {process1();process2();process3();System.out.println("END");} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");System.out.println("END");} catch (IOException e) {System.out.println("IO error");System.out.println("END");} }

上述代碼無論是否發(fā)生異常,都會執(zhí)行System.out.println("END");這條語句。

那么如何消除這些重復(fù)的代碼?Java的try ... catch機制還提供了finally語句,finally語句塊保證有無錯誤都會執(zhí)行。上述代碼可以改寫如下:

public static void main(String[] args) {try {process1();process2();process3();} catch (UnsupportedEncodingException e) {System.out.println("Bad encoding");} catch (IOException e) {System.out.println("IO error");} finally {System.out.println("END");} }

注意finally有幾個特點:

  • finally語句不是必須的,可寫可不寫;
  • finally總是最后執(zhí)行。
  • 如果沒有發(fā)生異常,就正常執(zhí)行try { ... }語句塊,然后執(zhí)行finally。如果發(fā)生了異常,就中斷執(zhí)行try { ... }語句塊,然后跳轉(zhuǎn)執(zhí)行匹配的catch語句塊,最后執(zhí)行finally。

    可見,finally是用來保證一些代碼必須執(zhí)行的。

    某些情況下,可以沒有catch,只使用try ... finally結(jié)構(gòu)。例如:

    void process(String file) throws IOException {try {...} finally {System.out.println("END");} }

    因為方法聲明了可能拋出的異常,所以可以不寫catch。

    捕獲多種異常

    如果某些異常的處理邏輯相同,但是異常本身不存在繼承關(guān)系,那么就得編寫多條catch子句:

    public static void main(String[] args) {try {process1();process2();process3();} catch (IOException e) {System.out.println("Bad input");} catch (NumberFormatException e) {System.out.println("Bad input");} catch (Exception e) {System.out.println("Unknown error");} }

    因為處理IOException和NumberFormatException的代碼是相同的,所以我們可以把它兩用|合并到一起:

    public static void main(String[] args) {try {process1();process2();process3();} catch (IOException | NumberFormatException e) { // IOException或NumberFormatExceptionSystem.out.println("Bad input");} catch (Exception e) {System.out.println("Unknown error");} }

    練習(xí)

    用try ... catch捕獲異常并處理。

    下載練習(xí):捕獲異常練習(xí) (推薦使用IDE練習(xí)插件快速下載)

    小結(jié)

    使用try ... catch ... finally時:

    • 多個catch語句的匹配順序非常重要,子類必須放在前面;
    • finally語句保證了有無異常都會執(zhí)行,它是可選的;
    • 一個catch語句也可以匹配多個非繼承關(guān)系的異常。
    • 關(guān)注樂字節(jié),這里有更多更好的Java干貨知識

    總結(jié)

    以上是生活随笔為你收集整理的java try catch_Java捕获异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 风流少妇一区二区三区91 | 国产精品夜夜 | 深夜视频在线播放 | 成人久久久久久 | 欧美日韩国产精品综合 | 成人性生交大全免 | 老司机午夜免费视频 | 一区二区三区入口 | 大地资源二中文在线影视免费观看 | 毛片久久久 | 在线视频第一页 | 色窝av| 欧美日韩在线观看一区二区三区 | 免费国产视频在线观看 | 疯狂撞击丝袜人妻 | 欧美三级大片 | 美女露出粉嫩尿囗让男人桶 | 91成人在线观看高潮 | 99精品久久久久久中文字幕 | 亚洲欧美综合精品久久成人 | 精品电影在线观看 | 五月婷婷丁香花 | 欧美少妇15p| 国产鲁鲁视频在线观看特色 | 少妇色视频 | 久草资源在线视频 | av网站在线观看免费 | 青青青免费视频观看在线 | 久久久午夜 | 色呦呦国产精品 | 精品国产aⅴ | 久久久精品一区二区 | 成人av资源在线 | 日日操日日射 | 老司机免费精品视频 | 国产精品午夜福利 | 污污视频网站在线免费观看 | 天天综合日日夜夜 | www.色综合.com| 美女av片| 超碰免费公开在线 | 亚洲色图丝袜美腿 | 日韩精品免费在线 | 国产精品一区二区av白丝下载 | 久久久精品| 污动漫网站 | 久久国产精品一区二区三区 | 超碰在线日韩 | 7788色淫网站小说 | 丁香婷婷六月 | 精品人妻一区二区免费视频 | 色悠悠久久综合 | 欧美伊人网 | 欧美国产日韩在线观看 | 九九热精品视频 | 色老大视频 | 亚洲一区高清 | 天堂在线中文网 | va在线视频| 在线观看黄色动漫 | 青青国产在线 | 亚洲黄色大全 | 男生c女生 | 影院一区 | 五月开心网 | 中文字幕在线观 | 涩涩一区| 九九热视频在线免费观看 | av电影在线网站 | 久久免费看 | 夜夜视频 | 国产suv精品一区二区60 | 亚洲av无码一区二区三区在线观看 | 亚洲精品在线不卡 | 波多野结衣在线网址 | 亚洲av日韩av在线观看 | 精品人妻少妇AV无码专区 | 香蕉人人精品 | 中文字幕高清在线 | 天天性综合 | 久久福利一区 | 国产情侣第一页 | 国产福利一区二区 | 观看毛片| 成人在线视频免费观看 | 波多野结衣电影在线播放 | 婷婷婷色 | 麻豆影视在线 | 老女人性生活视频 | 欲色综合 | 国产叼嘿视频 | 久久一道本 | 91最新入口| 一区二区三区福利视频 | 亚洲成年人av | 蜜臀久久99精品久久一区二区 | xxxxx在线视频 | 操操操网 | 麻豆午夜视频 |