最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java異常處理執(zhí)行順序詳解try catch finally

 更新時(shí)間:2021年10月13日 10:35:35   作者:guoyp2126  
try catch語(yǔ)句是java語(yǔ)言用于捕獲異常并進(jìn)行處理的標(biāo)準(zhǔn)方式,對(duì)于try catch及try catch finally執(zhí)行順序必須有深入的了解

不含return的執(zhí)行順序

執(zhí)行順序?yàn)閳?zhí)行try中代碼,如果沒(méi)有異常,然后執(zhí)行try catch后續(xù)的代碼。如:

public static void main(String[] args) {
        try {
            int j = 10 / 2;
            System.out.println("執(zhí)行try中代碼!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("執(zhí)行catch中代碼!");
        }
        System.out.println("執(zhí)行catch后的代碼!");
    }

執(zhí)行結(jié)果為:

在這里插入圖片描述

如果有異常,則try中異常后的代碼將不執(zhí)行,開(kāi)始執(zhí)行catch中的代碼,執(zhí)行完成后,執(zhí)行try catch后續(xù)的代碼,示例代碼如下:

    public static void main(String[] args) {
        try {
            int j = 10 / 0;
            System.out.println("執(zhí)行try中代碼!");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("執(zhí)行catch中代碼!");
        }
        System.out.println("執(zhí)行catch后的代碼!");
    }

執(zhí)行結(jié)果

在這里插入圖片描述

發(fā)生異常語(yǔ)句后的代碼:System.out.println(“執(zhí)行try中代碼!”)不再執(zhí)行。

finally子句

使用try catch finally子句時(shí),無(wú)論發(fā)生不發(fā)生異常,finally子句中的代碼都是要執(zhí)行,一般用于釋放資源、連接等操作。

   public static void main(String[] args)  {
        try {
            int i = 8/0;
            System.out.println("執(zhí)行try中代碼!");
        } catch (Exception e) {
            System.out.println("執(zhí)行catch中代碼!");
        } finally {
            System.out.println("執(zhí)行finally中代碼!");
        }
        System.out.println("執(zhí)行try catch后的代碼!");
    }

執(zhí)行try catch或try catch finally之后,執(zhí)行后續(xù)的代碼。

含return的執(zhí)行順序

如果不包含finally語(yǔ)句,在try子句和catch子句中均含有return語(yǔ)句,代碼遇到return語(yǔ)句則終止代碼的執(zhí)行,try catch后面的語(yǔ)句不可能得到執(zhí)行。

在這里插入圖片描述

含有finally語(yǔ)句的try catch子句包含return語(yǔ)句執(zhí)行順序,執(zhí)行finally子句,然后執(zhí)行try或者catch的return語(yǔ)句,此時(shí)若finally語(yǔ)句包含return或終止運(yùn)行,則try catch子句中的return語(yǔ)句將不執(zhí)行。如:

    public static void main(String[] args)  {
       Integer i= testReturn();
        System.out.println(i);
    }

    public static Integer testReturn(){
        try {
            int i = 8/0;
            System.out.println("執(zhí)行try中代碼!");
            return 1;
        } catch (Exception e) {
            System.out.println("執(zhí)行catch中代碼!");
            return 0;
        }
        finally {
            System.out.println("執(zhí)行finally中代碼!");
            return 3;
        }
    }

執(zhí)行結(jié)果

在這里插入圖片描述

如果再finally終止程序運(yùn)行,則丟失返回值

public static void main(String[] args)  {
       Integer i= testReturn();
        System.out.println(i);
    }
    public static Integer testReturn(){
        try {
            int i = 8/0;
            System.out.println("執(zhí)行try中代碼!");
            return 1;
        } catch (Exception e) {
            System.out.println("執(zhí)行catch中代碼!");
            return 0;
        }
        finally {
            System.out.println("執(zhí)行finally中代碼!");
            System.exit(0);  //退出程序,返回值丟失
        }
    }

執(zhí)行結(jié)果如下圖:

在這里插入圖片描述

沒(méi)有輸出返回值

返回類型是對(duì)象類型時(shí)值的變化

返回類型如果是對(duì)象類型,則返回的是指針。此時(shí)如果finally中包含對(duì)象的炒作,注意返回值的變化。示例代碼如下
創(chuàng)建一個(gè)Person的類

public class Person {
    private  String name;
    private  String adress;
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", adress='" + adress + '\'' +
                '}';
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAdress() {
        return adress;
    }

    public void setAdress(String adress) {
        this.adress = adress;
    }
}

含有return的測(cè)試代碼如下

    public static void main(String[] args)  {
        Person person = testObjReturn();
        System.out.println(person.toString());
    }
    public static Person testObjReturn(){
        Person person = new Person();
        try {
            int i = 8/0;
            person.setName("王小二");
            person.setAdress("電子街1號(hào)");
            return person;
        } catch (Exception e) {
            person.setName("朱小三");
            person.setAdress("電子街1號(hào)");
            return person;
        }
        finally {
            person.setName("李老五");;
        }
    }

執(zhí)行結(jié)果

在這里插入圖片描述

結(jié)論

try catch finally帶有return語(yǔ)句時(shí),既可以將return語(yǔ)句放到try和catch中,也可以放到過(guò)程的結(jié)尾,一般建議放到結(jié)尾,便于統(tǒng)一管理。特別注意finally包含return語(yǔ)句時(shí)try、catch中的return將不再執(zhí)行。尤其當(dāng)返回的變量是實(shí)體對(duì)象時(shí),finally中的語(yǔ)句如果對(duì)返回的變量進(jìn)行修改,則將影響到返回值。

以上就是java異常處理執(zhí)行順序詳解try catch finally的詳細(xì)內(nèi)容,更多關(guān)于java異常try catch finally執(zhí)行順序的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Spring Cloud OAuth2 實(shí)現(xiàn)用戶認(rèn)證及單點(diǎn)登錄的示例代碼

    Spring Cloud OAuth2 實(shí)現(xiàn)用戶認(rèn)證及單點(diǎn)登錄的示例代碼

    這篇文章主要介紹了Spring Cloud OAuth2 實(shí)現(xiàn)用戶認(rèn)證及單點(diǎn)登錄的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • java計(jì)算兩個(gè)日期中間的時(shí)間

    java計(jì)算兩個(gè)日期中間的時(shí)間

    這篇文章主要介紹了java計(jì)算兩個(gè)日期中間的時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 一文搞懂MyBatis多數(shù)據(jù)源Starter實(shí)現(xiàn)

    一文搞懂MyBatis多數(shù)據(jù)源Starter實(shí)現(xiàn)

    本文將實(shí)現(xiàn)一個(gè)MyBatis的Springboot的Starter包,引用這個(gè)Starter包后,僅需要提供少量配置信息,就能夠完成MyBatis多數(shù)據(jù)源的初始化和使用,需要的小伙伴可以參考一下
    2023-04-04
  • 四種引用類型在JAVA Springboot中的使用詳解

    四種引用類型在JAVA Springboot中的使用詳解

    這篇文章主要介紹了springboot的四種引用類型,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringDataRedis入門和序列化方式解決內(nèi)存占用問(wèn)題小結(jié)

    SpringDataRedis入門和序列化方式解決內(nèi)存占用問(wèn)題小結(jié)

    spring-data-redis是spring-data模塊的一部分,專門用來(lái)支持在spring管理項(xiàng)目對(duì)redis的操作,這篇文章主要介紹了SpringDataRedis入門和序列化方式解決內(nèi)存占用問(wèn)題,需要的朋友可以參考下
    2022-12-12
  • 解決Maven依賴沖突的方法

    解決Maven依賴沖突的方法

    本文主要介紹了解決Maven依賴沖突的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Java獲得一個(gè)數(shù)組的指定長(zhǎng)度排列組合算法示例

    Java獲得一個(gè)數(shù)組的指定長(zhǎng)度排列組合算法示例

    這篇文章主要介紹了Java獲得一個(gè)數(shù)組的指定長(zhǎng)度排列組合算法,結(jié)合實(shí)例形式分析了java排列組合相關(guān)數(shù)組遍歷、運(yùn)算操作技巧,需要的朋友可以參考下
    2019-06-06
  • Java多線程之多線程異常捕捉

    Java多線程之多線程異常捕捉

    在java多線程程序中,所有線程都不允許拋出未捕獲的checked exception,也就是說(shuō)各個(gè)線程需要自己把自己的checked exception處理掉,通過(guò)此篇文章給大家分享Java多線程之多線程異常捕捉,需要的朋友可以參考下
    2015-08-08
  • SpringBoot集成Druid連接池連接MySQL8.0.11

    SpringBoot集成Druid連接池連接MySQL8.0.11

    這篇博客簡(jiǎn)單介紹spring boot集成druid連接池的簡(jiǎn)單配置和注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例

    java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例

    這篇文章主要介紹了java 定義長(zhǎng)度為0的數(shù)組/空數(shù)組案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論

镇平县| 张家港市| 时尚| 新和县| 道真| 洛阳市| 饶平县| 鹤山市| 遂平县| 长海县| 仁怀市| 荆州市| 武威市| 德昌县| 海淀区| 巴塘县| 保德县| 祁东县| 鹿泉市| 梅河口市| 山西省| 松滋市| 文山县| 安西县| 湘西| 海盐县| 惠东县| 通山县| 陇川县| 曲松县| 隆安县| 义马市| 韶山市| 临清市| 句容市| 大丰市| 公安县| 高阳县| 车致| 南和县| 顺义区|