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

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

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

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

執(zhí)行順序?yàn)閳?zhí)行try中代碼,如果沒有異常,然后執(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í)行,開始執(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ā)生異常語句后的代碼:System.out.println(“執(zhí)行try中代碼!”)不再執(zhí)行。

finally子句

使用try catch finally子句時(shí),無論發(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語句,在try子句和catch子句中均含有return語句,代碼遇到return語句則終止代碼的執(zhí)行,try catch后面的語句不可能得到執(zhí)行。

在這里插入圖片描述

含有finally語句的try catch子句包含return語句執(zhí)行順序,執(zhí)行finally子句,然后執(zhí)行try或者catch的return語句,此時(shí)若finally語句包含return或終止運(yùn)行,則try catch子句中的return語句將不執(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é)果如下圖:

在這里插入圖片描述

沒有輸出返回值

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

返回類型如果是對象類型,則返回的是指針。此時(shí)如果finally中包含對象的炒作,注意返回值的變化。示例代碼如下
創(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的測試代碼如下

    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號");
            return person;
        } catch (Exception e) {
            person.setName("朱小三");
            person.setAdress("電子街1號");
            return person;
        }
        finally {
            person.setName("李老五");;
        }
    }

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

在這里插入圖片描述

結(jié)論

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

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

相關(guān)文章

  • 詳解Java內(nèi)部類——匿名內(nèi)部類

    詳解Java內(nèi)部類——匿名內(nèi)部類

    這篇文章主要介紹了詳解Java 匿名內(nèi)部類的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)java 內(nèi)部類的相關(guān)知識,感興趣的朋友可以了解下
    2020-08-08
  • java中數(shù)組的定義及使用方法(推薦)

    java中數(shù)組的定義及使用方法(推薦)

    下面小編就為大家?guī)硪黄猨ava中數(shù)組的定義及使用方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • java如何通過IP解析地理位置

    java如何通過IP解析地理位置

    這篇文章主要介紹了java如何通過IP解析地理位置的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SpringBoot使用 druid 連接池來優(yōu)化分頁語句

    SpringBoot使用 druid 連接池來優(yōu)化分頁語句

    這篇文章主要介紹了SpringBoot使用 druid 連接池來優(yōu)化分頁語句,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • JAVA自定義注解實(shí)現(xiàn)接口/ip限流的示例代碼

    JAVA自定義注解實(shí)現(xiàn)接口/ip限流的示例代碼

    本文主要介紹了JAVA自定義注解實(shí)現(xiàn)接口/ip限流的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 簡單介紹Java網(wǎng)絡(luò)編程中的HTTP請求

    簡單介紹Java網(wǎng)絡(luò)編程中的HTTP請求

    這篇文章主要介紹了簡單介紹Java網(wǎng)絡(luò)編程中的HTTP請求,需要的朋友可以參考下
    2015-09-09
  • java的Arrays工具類實(shí)戰(zhàn)

    java的Arrays工具類實(shí)戰(zhàn)

    java.util.Arrays類能方便地操作數(shù)組,它提供的所有方法都是靜態(tài)的。Arrays作為一個(gè)工具類,能很好的操作數(shù)組。下面介紹主要使用的幾個(gè)函數(shù)
    2016-12-12
  • SpringMVC 整合SSM框架詳解

    SpringMVC 整合SSM框架詳解

    這篇文章主要介紹了SpringMVC 整合SSM框架詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 使用@Cacheable緩存解決雙冒號::的問題

    使用@Cacheable緩存解決雙冒號::的問題

    這篇文章主要介紹了使用@Cacheable緩存解決雙冒號::的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot部署在Weblogic的操作步驟

    SpringBoot部署在Weblogic的操作步驟

    這篇文章主要介紹了SpringBoot部署在Weblogic的操作步驟,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論