一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java異常處理執行順序詳解try catch finally

java異常處理執行順序詳解try catch finally

2022-02-17 15:06guoyp2126 Java教程

try catch語句是java語言用于捕獲異常并進行處理的標準方式,對于try catch及try catch finally執行順序必須有深入的了解

不含return的執行順序

執行順序為執行try中代碼,如果沒有異常,然后執行try catch后續的代碼。如:

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

執行結果為:

java異常處理執行順序詳解try catch finally

如果有異常,則try中異常后的代碼將不執行,開始執行catch中的代碼,執行完成后,執行try catch后續的代碼,示例代碼如下:

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

執行結果

java異常處理執行順序詳解try catch finally

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

finally子句

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

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

執行try catch或try catch finally之后,執行后續的代碼。

 

含return的執行順序

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

java異常處理執行順序詳解try catch finally

含有finally語句的try catch子句包含return語句執行順序,執行finally子句,然后執行try或者catch的return語句,此時若finally語句包含return或終止運行,則try catch子句中的return語句將不執行。如:

  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("執行try中代碼!");
          return 1;
      } catch (Exception e) {
          System.out.println("執行catch中代碼!");
          return 0;
      }
      finally {
          System.out.println("執行finally中代碼!");
          return 3;
      }
  }

執行結果

java異常處理執行順序詳解try catch finally

如果再finally終止程序運行,則丟失返回值

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("執行try中代碼!");
          return 1;
      } catch (Exception e) {
          System.out.println("執行catch中代碼!");
          return 0;
      }
      finally {
          System.out.println("執行finally中代碼!");
          System.exit(0);  //退出程序,返回值丟失
      }
  }

執行結果如下圖:

java異常處理執行順序詳解try catch finally

沒有輸出返回值

 

返回類型是對象類型時值的變化

返回類型如果是對象類型,則返回的是指針。此時如果finally中包含對象的炒作,注意返回值的變化。示例代碼如下
創建一個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("李老五");;
      }
  }

執行結果

java異常處理執行順序詳解try catch finally

 

結論

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

以上就是java異常處理執行順序詳解try catch finally的詳細內容,更多關于java異常try catch finally執行順序的資料請關注服務器之家其它相關文章!

原文鏈接:https://blog.csdn.net/guoyp2126/article/details/117484471

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 天堂网www在线中文天堂 | miaa076深田咏美在线 | 香蕉97超级碰碰碰免费公 | 久久精品一区二区免费看 | 国内会所按摩推拿国产 | 欧美精品v欧洲高清 | 国产高清国内精品福利色噜噜 | 天天干天天日天天射天天操毛片 | 亚洲精品www久久久久久久软件 | 午夜爱爱爱爱爽爽爽视频网站 | 色色色色网站 | 晚上禁用的十大黄台视频 | 99久久精品久久久久久清纯 | 暖暖高清日本在线 | 91久| 婷婷丁香色综合狠狠色 | 2021最新国产成人精品视频 | 免费久久久久 | 精品无码国产AV一区二区三区 | 日韩理论片 | 动态图啪啪120秒免费看 | 女人把私密部位张开让男人桶 | 精品国产免费第一区二区三区日韩 | 成人免费视频一区二区 | 亚洲国产一区二区a毛片 | 青草国产福利视频免费观看 | 精品国偷自产在线 | 青青草原在线 | 成人小视频在线观看免费 | 天天天综合网 | 精品国产一区二区三区久 | 国产欧美另类久久精品91 | 亚洲成色WWW久久网站夜月 | 啊皇上你好大要知画 | 天堂伊人 | 婷婷丁香色综合狠狠色 | 欧美一级视 | 亚洲精品在线看 | www.尤物在线 | 亚洲色图欧美色 | 国产极品久久 |