日韩性视频-久久久蜜桃-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精品一区 | 亚洲九九夜夜 | 亚洲午夜精品一区二区 | 日皮毛片 | 另类天堂网 | 亚洲精品91在线 | 亚洲黄色在线观看视频 | 黄色网页免费观看 | 亚洲色图视频在线观看 | 欧美视频一二三 | 日韩国产欧美综合 | 精国产品一区二区三区a片 国产精品第一 | 久久久久久久久久久久久久久 | 日日操夜夜爱 | 美国做爰xxxⅹ性视频 | 西西444www大胆无视频 | 成人日韩在线观看 | 亚洲精品二区 | 日韩人妻一区二区三区蜜桃 | 欧美日韩精品国产 | 嫩草av在线 | 自拍视频网站 | 桃谷绘里香番号 | 人妻少妇偷人精品久久久任期 | 国产精品999久久久 在线青草 | 久草麻豆| 欧美另类专区 | 全黄一级男人和女人 | 久久久久久97 | 18禁超污无遮挡无码免费游戏 | 男生c女生| 免费一级欧美 | 国产在线看片 | 蜜桃成人在线视频 | 久久久久久久久免费 | 黄视频网站免费看 | 免费看片亚洲 | 偷偷操网站| 亚洲男女在线观看 | 国产又粗又猛视频 | 亚洲一区二区三区久久久成人动漫 | 偷拍久久久 | 亚洲青涩 | 日韩久久一区二区 | 一区中文字幕 | 欧美123区 | av在线最新 | 国内少妇精品 | 91亚洲专区 | 亚欧洲乱码视频 | 国产精品国产三级国产 | 最新av免费观看 | 综合在线视频 | 美女扒开尿口给男人桶 | 亚洲高清色图 | 国产精品va | 男阳茎进女阳道视频大全 | 日本va欧美va精品发布 | 国产三级在线免费 | 久久cao | 不卡av网站 | 黄色aaa视频 | 哈利波特3在线观看免费版英文版 | 久久婷婷国产麻豆91 | 欧美人与禽zozzozzo | 丁香花国语版普通话 | 亚洲精品国产免费 | 青草久久久 | 婷婷综合色 | 久久久999视频 | 国产精品乱码久久久久久久久 | 欧美一区二区人人喊爽 | 婷婷伊人五月 | 久久yy | 日韩在线观看精品 | av一区二区不卡 | 99精品久久精品一区二区 | 欧美亚洲色综久久精品国产 | 麻豆久久久午夜一区二区 | 91原创视频 | ass日本粉嫩pics珍品 | 亚洲六月婷婷 | 中文字幕一区二区在线观看 | 国产国语对白 | 午夜探花视频 | 国产免费黄色大片 | 爱涩av| 欧美性一区二区三区 | 在线免费观看黄色片 | 在线免费精品 | 在线观看成人免费 | 日韩性高潮 | 人妻久久一区二区 | 男生插女生的网站 | 欧美精品在线一区二区三区 | 激情成人av | 老司机在线免费视频 | 欧洲一区二区三区在线 |