欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況詳析

 更新時間:2024年05月21日 09:04:57   作者:Mr_X_X  
當(dāng)產(chǎn)生異常后,并在異常處理器中進行執(zhí)行之后,程序會是如何的一種狀態(tài),是終止還是繼續(xù)執(zhí)行處理之后的代碼呢,下面這篇文章主要給大家介紹了關(guān)于JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況的相關(guān)資料,需要的朋友可以參考下

一、出現(xiàn)異常時,try-catch對代碼執(zhí)行的影響

1.1、不加try-catch

//情形1:不加try-catch,出現(xiàn)異常,后續(xù)代碼不再執(zhí)行
    @Test
    public void test1() {
        String a = null;
        int c = 0;
        int b = a.length();  //null沒有l(wèi)ength()方法,報空指針異常錯誤
        //下面兩條賦值語句不會執(zhí)行
        System.out.println("c的值為:" + c);
    }

結(jié)果如下: 

結(jié)論: 

1、System.out.println("c的值為:" + c);不執(zhí)行

2、不加try-catch,出現(xiàn)異常,后續(xù)代碼不再執(zhí)行

1.2、加上try-catch

//情形2:加上try-catch,出現(xiàn)異常,try中出現(xiàn)異常的那一行代碼的后續(xù)代碼不再執(zhí)行
    //catch中的代碼正常執(zhí)行
    @Test
    public void test2() {
        String a = null;
        int c = 0, d = 0;
        try {
            int b = a.length();  //null沒有l(wèi)ength()方法,報空指針異常錯誤
            //下面兩條賦值語句不會執(zhí)行
            c = 1;
            d = 2;
        } catch (Exception e) {
            System.out.println("c的值為:" + c);
        }
        System.out.println("d的值為:" + d);   //本條語句會執(zhí)行

    }

結(jié)果如下:

結(jié)論: 

1、加上try-catch,出現(xiàn)異常時,try中出現(xiàn)異常的那一行代碼的后續(xù)代碼不再執(zhí)行

2、catch中的代碼正常執(zhí)行,并且catch之后的代碼也會執(zhí)行

1.3、 加上try-catch,并在try中拋出現(xiàn)異常

//情形3:加上try-catch,并在try中拋出現(xiàn)異常,
    // try中拋出異常的那一行代碼的后續(xù)代碼不再執(zhí)行
    //catch中的代碼正常執(zhí)行
    @Test
    public void test3() {
        String a = null;
        int c = 0, d = 0;
        try {
            if (a == null) {
                throw new RuntimeException("a的值不能是空");
            }
            //下面兩條賦值語句不會執(zhí)行
            c = 1;
            d = 2;
        } catch (Exception e) {
            System.out.println("c的值為:" + c); //會執(zhí)行
        }
        System.out.println("d的值為:" + d); //會執(zhí)行

    }

結(jié)果如下:

結(jié)論:

1、加上try-catch,并在try中拋出現(xiàn)異常,try中拋出異常的那一行代碼的后續(xù)代碼不再執(zhí)行

2、catch中的代碼正常執(zhí)行,并且catch之后的代碼也會執(zhí)行

1.4、加上try-catch,并在catch中拋出現(xiàn)異常

//情形4:加上try-catch,并在catch中拋出現(xiàn)異常,
    //try中出現(xiàn)異常的那一行代碼的后續(xù)代碼不再執(zhí)行
    //catch中的代碼只執(zhí)行throw之前的代碼
    @Test
    public void test4() {
        String a = null;
        int c = 0, d = 0;
        try {
            int b = a.length();  //null沒有l(wèi)ength()方法,報空指針異常錯誤
            //下面兩條賦值語句不會執(zhí)行
            c = 1;
            d = 2;
        } catch (Exception e) {
            System.out.println("c的值為:" + c);
            throw new RuntimeException(e);
        }
        System.out.println("d的值為:" + d);   //本條語句也不執(zhí)行

    }

結(jié)果如下:

結(jié)論:

 1、加上try-catch,并在catch中拋出現(xiàn)異常,try中出現(xiàn)異常的那一行代碼的后續(xù)代碼不再執(zhí)行。

2、catch中的代碼只執(zhí)行throw之前的代碼

二、循環(huán)時出現(xiàn)異常后續(xù)代碼是否執(zhí)行

我們需要明確的一點是,當(dāng)出現(xiàn)異常時,Java中的for循環(huán)默認(rèn)會停止執(zhí)行,不會進行下一次循環(huán)。

 2.1、循環(huán)中不加try-catch

//不加try-catch,當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)
    @Test
    public void test5() {
        String title = "我要拿高薪";
        for (int i = 0; i < title.length(); i++) {
            System.out.println("執(zhí)行了第" + i + "次");
            int j = 1 / 0;

        }
    }

結(jié)果如下:

 結(jié)論:

不加try-catch,當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)

2.2、循環(huán)中加try-catch 

//加try-catch,當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)
    @Test
    public void test6() {
        String title = "我要拿高薪";
        try {
            for (int i = 0; i < title.length(); i++) {
                System.out.println("執(zhí)行了第" + i + "次");
                int j = 1 / 0;

            }
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
        }

    }

 結(jié)果如下:

 結(jié)論:

加try-catch,當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)

2.3、加try-catch,并在catch中將異常拋出

//加try-catch,并在catch中將異常拋出
    //當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)
    @Test
    public void test7() {
        String title = "我要拿高薪";
        try {
            for (int i = 0; i < title.length(); i++) {
                System.out.println("執(zhí)行了第" + i + "次");
                int j = 1 / 0;

            }
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
            throw e;
        }

    }

 結(jié)果如下:

結(jié)論:

加try-catch,并在catch中將異常拋出,當(dāng)循環(huán)中出現(xiàn)異常時,循環(huán)會終止,不會繼續(xù)下一次循環(huán)

2.4、在for循環(huán)中加上嵌套try-catch并使用continue

@Test
    public void test8() {
        String title = "我要拿高薪";
        try {
            for (int i = 0; i < title.length(); i++) {
                try {
                    System.out.println("執(zhí)行了第" + i + "次");
                    int j = 1 / 0;
                } catch (Exception e) {
                    System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
                    continue;
                }


            }
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
        }

    }

  結(jié)果如下:

 結(jié)論:

在for循環(huán)中加上嵌套try-catch,并在catch中使用continue,可以使循環(huán)一直執(zhí)行下去

三、調(diào)用的方法內(nèi)部出現(xiàn)異常

3.1、調(diào)用的方法內(nèi)部出現(xiàn)異常

 @Test
    public void test9() {
        try {
            save1();
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
        }

    }

    public void save1() {
        System.out.println("我要當(dāng)高級JAVA開發(fā)工程師");
        int i = 1 / 0;
        
    }

  結(jié)果如下:

  結(jié)論:

方法內(nèi)部不對異常做任何處理,調(diào)用處的catch可以捕獲到異常。

3.2、調(diào)用的方法內(nèi)部出現(xiàn)異常并捕獲

@Test
    public void test9() {
        try {
            save2();
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
        }
    }

    public void save2() {
        try {
            System.out.println("我要當(dāng)高級JAVA開發(fā)工程師");
            int i = 1 / 0;
        } catch (Exception e) {
            System.out.println("方法內(nèi)部出現(xiàn)了異常" + e);
        }
    }

 結(jié)果如下:

結(jié)論:

 方法內(nèi)部對異常進行捕獲,調(diào)用處的catch不能捕獲到異常。

3.3、調(diào)用的方法內(nèi)部出現(xiàn)異常并捕獲最后拋出

@Test
    public void test9() {
        try {
            save3();
        } catch (Exception e) {
            System.out.println("循環(huán)中出現(xiàn)了異常:" + e);
        }
    }
    
    public void save3() {
        try {
            System.out.println("我要當(dāng)高級JAVA開發(fā)工程師");
            int i = 1 / 0;
        } catch (Exception e) {
            System.out.println("方法內(nèi)部出現(xiàn)了異常" + e);
            throw e;
        }
    }

結(jié)果如下:

結(jié)論:

 方法內(nèi)部對異常進行捕獲,最后拋出。調(diào)用處的catch可以捕獲到異常。

總結(jié)

到此這篇關(guān)于JAVA中出現(xiàn)異常、拋出異常后續(xù)代碼是否執(zhí)行情況詳析的文章就介紹到這了,更多相關(guān)JAVA拋出異常代碼是否執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • activemq整合springboot使用方法(個人微信小程序用)

    activemq整合springboot使用方法(個人微信小程序用)

    這篇文章主要介紹了activemq整合springboot使用(個人微信小程序用),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Mybatis @SelectKey用法解讀

    Mybatis @SelectKey用法解讀

    這篇文章主要介紹了Mybatis @SelectKey用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot QQ郵箱發(fā)送郵件實例代碼

    SpringBoot QQ郵箱發(fā)送郵件實例代碼

    大家好,本篇文章主要講的是SpringBoot QQ郵箱發(fā)送郵件實例代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java實現(xiàn)獲取銀行卡所屬銀行,驗證銀行卡號是否正確的方法詳解

    Java實現(xiàn)獲取銀行卡所屬銀行,驗證銀行卡號是否正確的方法詳解

    這篇文章主要介紹了Java實現(xiàn)獲取銀行卡所屬銀行,驗證銀行卡號是否正確的方法,結(jié)合實例形式詳細(xì)分析了java判斷銀行卡歸屬地及有效性的原理與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2019-09-09
  • Java 抽象類定義與方法實例詳解

    Java 抽象類定義與方法實例詳解

    這篇文章主要介紹了java 抽象類與接口的區(qū)別介紹的相關(guān)資料,需要的朋友可以參考下...
    2017-04-04
  • mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)

    mybatis的insert插入后獲取自增id的方法詳解(從controller到mapper)

    這篇文章主要介紹了mybatis的insert插入后獲取自增id的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • SpringBoot擴展外部化配置的原理解析

    SpringBoot擴展外部化配置的原理解析

    這篇文章主要介紹了SpringBoot擴展外部化配置的原理解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • mybatis plus自動生成代碼tinyint(1)自動轉(zhuǎn)換為Boolean的問題及解決

    mybatis plus自動生成代碼tinyint(1)自動轉(zhuǎn)換為Boolean的問題及解決

    這篇文章主要介紹了mybatis plus自動生成代碼tinyint(1)自動轉(zhuǎn)換為Boolean的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    一文帶你深入了解Java的數(shù)據(jù)結(jié)構(gòu)

    Java工具包提供了強大的數(shù)據(jù)結(jié)構(gòu)。這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)中常用的幾種接口和類,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-05-05
  • java多態(tài)注意項小結(jié)

    java多態(tài)注意項小結(jié)

    面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài)。從一定角度來看,封裝和繼承幾乎都是為多態(tài)而準(zhǔn)備的。今天通過本文給大家介紹java多態(tài)注意項總結(jié),感興趣的朋友一起看看吧
    2021-10-10

最新評論