亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

深入剖析Java中的各種異常處理方式

2019-11-26 15:02:12
字體:
來源:轉載
供稿:網友

1. 調試追蹤代碼:

  public static void enterTryMethod() {     System.out.println("enter after try field");   }      public static void enterExceptionMethod() {     System.out.println("enter catch field");   }      public static void enterFinallyMethod() {     System.out.println("enter finally method");   } 

2. 拋出Exception,沒有finally,當catch遇上return

   

public static int catchTest() {     int res = 0;          try {       res = 10 / 0; // 拋出Exception,后續處理被拒絕       enterTryMethod();       return res; // Exception已經拋出,沒有獲得被執行的機會     } catch (Exception e) {       enterExceptionMethod();       return 1;  // Exception拋出,獲得了調用方法并返回方法值的機會     }   } 

后臺輸出結果:

  enter catch field   1 

3. 拋出Exception,當catch體里有return,finally體的代碼塊將在catch執行return之前被執行

   

public static int catchTest() {     int res = 0;          try {       res = 10 / 0; // 拋出Exception,后續處理被拒絕       enterTryMethod();       return res; // Exception已經拋出,沒有獲得被執行的機會     } catch (Exception e) {       enterExceptionMethod();       return 1;  // Exception拋出,獲得了調用方法并返回方法值的機會     } finally {       enterFinallyMethod(); // Exception拋出,finally代碼將在catch執行return之前被執行     }   } 

后臺輸出結果:

  enter catch field   enter finally method   1 

4. 不拋出Exception,當finally代碼塊里面遇上return,finally執行完后將結束整個方法

  public static int catchTest() {     int res = 0;          try {       res = 10 / 2; // 不拋出Exception       enterTryMethod();       return res; // 獲得被執行的機會,但執行需要在finally執行完成之后才能被執行     } catch (Exception e) {       enterExceptionMethod();       return 1;     } finally {       enterFinallyMethod();       return 1000; // finally中含有return語句,這個return將結束這個方法,不會在執行完之后再跳回try或者catch繼續執行,方法到此結束     }   } 

后臺輸出結果:

  enter after try field   enter finally method   1000 

5. 不拋Exception,當finally代碼塊里面遇上System.exit()方法將結束和終止整個程序,而不只是方法

 

  public static int catchTest() {     int res = 0;          try {       res = 10 / 2; // 不拋出Exception       enterTryMethod();       return res; // 獲得被執行的機會,但由于finally已經終止程序,返回值沒有機會被返回     } catch (Exception e) {       enterExceptionMethod();       return 1;     } finally {       enterFinallyMethod();       System.exit(0); // finally中含有System.exit()語句,System.exit()將退出整個程序,程序將被終止     }   } 

后臺輸出結果:

  enter after try field   enter finally method 

6. 拋出Exception,當catch和finally同時遇上return,catch的return返回值將不會被返回,finally的return語句將結束整個方法并返回

   

 public static int catchTest() {     int res = 0;          try {       res = 10 / 0; // 拋出Exception,后續處理將被拒絕       enterTryMethod();       return res; // Exception已經拋出,沒有獲得被執行的機會     } catch (Exception e) {       enterExceptionMethod();       return 1; // Exception已經拋出,獲得被執行的機會,但返回操作將被finally截斷     } finally {       enterFinallyMethod();       return 10; // return將結束整個方法,返回值為10     }   } 

后臺輸出結果:

  enter catch field   enter finally method   10 

7. 不拋出Exception,當finally遇上return,try的return返回值將不會被返回,finally的return語句將結束整個方法并返回

   

 public static int catchTest() {     int res = 0;          try {       res = 10 / 2; // 不拋出Exception       enterTryMethod();       return res; // 獲得執行機會,但返回將被finally截斷     } catch (Exception e) {       enterExceptionMethod();       return 1;     } finally {       enterFinallyMethod();       return 10; // return將結束整個方法,返回值為10     }   } 

后臺輸出結果:

  enter after try field   enter finally method   10 


結論
Java的異常處理中,程序執行完try里面的代碼塊之后,該方法并不會立即結束,而是繼續試圖去尋找該方法有沒有finally的代碼塊

    如果沒有finally代碼塊,整個方法在執行完try代碼塊后返回相應的值來結束整個方法
    如果有finally代碼塊,此時程序執行到try代碼塊里的return一句之時并不會立即執行return,而是先去執行finally代碼塊里的代碼

若finally代碼塊里沒有return或沒有能夠終止程序的代碼,程序在執行完finally代碼塊代碼之后再返回try代碼塊執行return語句來結束整個方法。若 finally 代碼塊里有 return 或含有能夠終止程序的代碼,方法將在執行完 finally 之后被結束,不再跳回 try 代碼塊執行 return
在拋出異常的情況下,原理也是和上面的一樣的,你把上面說到的 try 換成 catch 去理解就OK了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩国产在线看| 97在线观看视频国产| 国产精品欧美亚洲777777| 亚洲精品98久久久久久中文字幕| 亚洲一区二区久久久| 中文字幕日韩av| 亚洲人成五月天| 亚洲欧洲一区二区三区久久| 国产精品免费一区二区三区都可以| 81精品国产乱码久久久久久| 插插插亚洲综合网| wwwwwwww亚洲| 久久久久久97| 人体精品一二三区| 555www成人网| 亚洲人成在线观| 国产成人在线视频| 国产不卡av在线免费观看| 成人精品久久久| 欧美性色视频在线| 大伊人狠狠躁夜夜躁av一区| 在线视频中文亚洲| 久久久久久久久久久免费| 中文字幕最新精品| 日韩一区二区在线视频| 一区二区三区精品99久久| 97视频人免费观看| 国产999精品久久久影片官网| 亚洲人精品午夜在线观看| 欧美激情视频网站| 九九热99久久久国产盗摄| 深夜福利日韩在线看| 91高潮在线观看| 精品亚洲国产成av人片传媒| 久久影视电视剧免费网站清宫辞电视| 亚洲japanese制服美女| 久久久999成人| 国产女人精品视频| 亚洲精品美女在线| 中文字幕无线精品亚洲乱码一区| 久久人人看视频| 国产精品欧美亚洲777777| 久久99久国产精品黄毛片入口| 国产原创欧美精品| 欧美日韩aaaa| 91国产美女在线观看| 国产精品一区二区久久国产| 日韩成人黄色av| 久久免费视频观看| 欧美激情一级精品国产| 欧美电影在线免费观看网站| 久久久久99精品久久久久| 国产精品吹潮在线观看| 久久中文字幕在线| 国产精品美女999| 国产视频久久久| 亚洲欧美综合v| 亚洲精品aⅴ中文字幕乱码| 国产成人精品av| 亚洲欧美激情视频| 亚洲第一福利视频| 欧美日韩成人网| 日韩电影大全免费观看2023年上| 欧美精品做受xxx性少妇| 亚洲国产精品成人av| 亚洲视频在线免费看| 欧美精品中文字幕一区| 91影院在线免费观看视频| 日韩av在线免费观看一区| 久久久精品久久久久| 欧美裸体视频网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产精品99蜜臀久久不卡二区| 亚洲精品久久久一区二区三区| 国产精品久久久久久久7电影| 国产亚洲精品91在线| www国产精品com| 国产精品久久久久久久久| 欧美激情乱人伦| 亚洲欧洲在线播放| 欧美激情二区三区| 日韩美女激情视频| 亚洲国产精品成人va在线观看| 成人av在线亚洲| 久久人人看视频| 久久成人综合视频| 亚洲夜晚福利在线观看| 亚洲精品一区二区久| 国产在线a不卡| 欧美影院在线播放| 亚洲欧美精品suv| 一区二区在线视频播放| 亚洲乱码一区av黑人高潮| 亚洲国产精品va在线看黑人| 欧美大片在线看免费观看| 5566日本婷婷色中文字幕97| 久久精品中文字幕一区| 蜜臀久久99精品久久久久久宅男| 久久久久久久999精品视频| 欧美日韩综合视频| 91精品国产沙发| 麻豆乱码国产一区二区三区| 日韩一区二区精品视频| 日韩免费在线观看视频| 日本精品免费一区二区三区| 国产欧美一区二区三区四区| 欧美乱人伦中文字幕在线| 欧美日韩裸体免费视频| 91性高湖久久久久久久久_久久99| 欧美成人黑人xx视频免费观看| 亚洲国产成人精品久久| 久久久久久午夜| 亚洲美女av网站| 日日摸夜夜添一区| 亚洲欧美成人在线| 精品视频在线导航| 欧美午夜女人视频在线| 97色在线播放视频| 国外成人在线直播| 久久精品视频在线| 成人女保姆的销魂服务| 亚洲最新av在线网站| 欧美超级乱淫片喷水| 日韩精品极品在线观看播放免费视频| 日韩中文在线视频| 欧美日韩免费区域视频在线观看| 亚洲国产一区二区三区在线观看| 久久亚洲精品网站| 亚洲成人国产精品| 国产精品日韩欧美综合| 国产精品免费一区| 亚洲影影院av| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久99久久| 久热精品视频在线| 日韩免费观看高清| 国产性猛交xxxx免费看久久| 久久99精品国产99久久6尤物| 日韩欧美国产高清91| 久久99久久亚洲国产| 色综合色综合网色综合| 69久久夜色精品国产69| 亚洲天堂色网站| 亚洲成人网久久久| 国产亚洲精品久久久优势| 亚洲精品资源美女情侣酒店| 国产精品免费电影| 九九精品在线播放| 91久久精品国产91久久性色| 国产91|九色| 亚洲欧美综合区自拍另类| 日本精品在线视频| 国产aaa精品| 精品久久久香蕉免费精品视频| 亚洲日本aⅴ片在线观看香蕉| 国产日韩欧美黄色| 亚洲人成在线免费观看| 久久夜色精品国产| 黑丝美女久久久| 欧美福利视频在线| 精品国产精品自拍| 91九色蝌蚪国产| 久久综合伊人77777| 亚洲欧美制服中文字幕|