色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Java基礎之finally語句與return語句詳解

瀏覽:3日期:2022-08-13 14:52:53
一、return語句執行順序

finally語句是在return語句執行之后,return語句返回之前執行的

package exception;public class Demo06 { public static void main(String[] args) {System.out.println(func()); } public static int func(){int a = 10;try{ System.out.println('try中的代碼塊'); return a += 10;}catch (Exception e){ System.out.println('catch中的代碼塊');}finally { System.out.println('finally中的代碼塊'); if(a > 10){System.out.println('a > 10,'+'a='+a); }}return a += 50; }}

運行結果:

try中的代碼塊finally中的代碼塊a > 10,a=2020

注意:

a > 10,a=20的結果說明了return a += 10已經執行了,但是沒有直接返回,而是先去執行finally語句的內容,然后再去返回結果

二、覆蓋問題

finally塊中的return語句會覆蓋try塊的return返回

package exception;public class Demo07 { public static void main(String[] args) {System.out.println(func()); } public static int func(){int a = 10;try{ System.out.println('try中的代碼塊'); return a += 10;}catch (Exception e){ System.out.println('catch中的代碼塊');}finally { System.out.println('finally中的代碼塊'); if(a > 10){System.out.println('a>10,'+'a='+a); } return 100;} }}

運行結果:

try中的代碼塊finally中的代碼塊a>10,a=20100

注意:

(1)如果try中有return語句,finally中也有return語句,最終執行的是finally中的return語句(2)如果finally代碼塊中寫了return語句,那么finally之后的return語句就變成不可到達的語句,需要注釋掉,否則編譯不過

如果finally語句沒有return語句覆蓋返回值,那么原來的返回值可能因為finally里的修改而改變也有可能不變

(1)測試1

package exception;public class Demo08 { public static void main(String[] args) {System.out.println(func()); } public static int func(){int a = 10;try{ System.out.println('try中的代碼塊'); return a += 20;}catch (Exception e){ e.printStackTrace(); System.out.println('catch中的代碼塊');}finally { System.out.println('finally中的代碼塊'); a += 20; if(a > 10){System.out.println('a > 10,a='+a); } a += 20;}return 200; }}

運行結果:

try中的代碼塊finally中的代碼塊a > 10,a=5030

注意:

對于基本數據類型來說,finally中對返回值的修改不會影響try中的返回變量的值

(2)測試2

package exception;import java.util.HashMap;import java.util.Map;public class Demo09 { public static void main(String[] args) {System.out.println(getMap().get('KEY').toString()); } public static Map<String,String> getMap(){Map<String,String> map = new HashMap<>();map.put('KEY','INIT');try{ map.put('KEY','try'); return map;}catch (Exception e){ e.printStackTrace(); map.put('KEY','catch');}finally { map.put('KEY','finally'); map = null;}return map; }}

運行結果:

finally

注意:

對于引用數據類型來說,finally中對返回值的修改會影響try中的返回變量的值

三、異常情況

try塊中的return語句在異常的情況下不會被執行

package exception;public class Demo10 { public static void main(String[] args) {System.out.println(func()); } public static int func(){int a = 10;try{ System.out.println('try中的代碼塊'); a = a/0; return a += 50;}catch (Exception e){ a += 15; System.out.println('catch中的代碼塊');}finally { System.out.println('finally中的代碼塊'); if(a > 20){System.out.println('a > 20,a ='+a); } a += 10;}return a; }}

運行結果:

try中的代碼塊catch中的代碼塊finally中的代碼塊a > 20,a =2535

注意:

try語句塊中發生異常,try語句異常后的內容不會執行,return語句也不會執行,執行的是捕獲到的catch語句塊和finally語句塊

try中發生異常時,return寫在catch語句中

package exception;public class Demo11 { public static void main(String[] args) {System.out.println(func()); } public static int func(){int a = 10;try{ System.out.println('try中的代碼塊'); a = a /0; return a += 10;}catch (Exception e){ System.out.println('catch中的代碼塊'); return a += 15;}finally { System.out.println('finally中的代碼塊'); if (a > 10){System.out.println('a > 10, a = '+a); } a += 50; System.out.println(a);} }}

運行結果:

try中的代碼塊catch中的代碼塊finally中的代碼塊a > 10, a = 257525

注意:

try中發生異常之后,catch中的return語句先執行,確定了返回值之后(保存起來,finally中的語句對返回值無影響)再去finally語句塊,執行完之后再返回a的值,finally中對a的修改對返回值無效

四、finally語句一定會被執行嗎?

(1)當程序進入try語句之前就出現異常時,會直接結束

(2)try語句塊中有強制退出時也不會執行finally語句塊中的代碼

System.exit(0);

代碼示例:

package exception;public class Demo12 { public static void main(String[] args) {int a = 10;try{ System.out.println('try block'); System.exit(0);}catch (Exception e){ System.out.println('catch block');}finally { System.out.println('finally block');} }}

運行結果:

try block

到此這篇關于Java基礎之finally語句與return語句詳解的文章就介紹到這了,更多相關java finally語句與return語句內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 国产欧美一区二区三区沐欲 | 国产亚洲欧美日韩综合综合二区 | 国产欧美另类久久久品 | 国产福利微拍精品一区二区 | 国产aⅴ精品一区二区三区久久 | 黄色美女视频网站 | 国产手机在线精品 | 国产日韩欧美在线观看不卡 | 亚洲欧美日韩中文字幕在线 | 性欧美videos高清精品 | 2019在线亚洲成年视频网站 | 国产中文久久精品 | 亚洲国产成人久久笫一页 | 久久青草网站 | 99免费在线视频 | 亚洲精品久久久久久久网站 | 国产亚洲欧美视频 | 欧美日韩一区二区三区高清不卡 | 日韩视频免费一区二区三区 | 女人18毛片a级毛片 女人aaaaa片一级一毛片 | 国产成人在线播放视频 | 中国美女牲交一级毛片 | 小明日韩在线看看永久区域 | 日韩欧美一区二区在线观看 | 亚洲精品久久玖玖玖玖 | 成人看片在线观看免费 | 欧美一级爆毛片 | 欧美日韩在线观看视频 | 久久久免费观看视频 | 精品国产成人综合久久小说 | 国产欧美日韩综合精品一区二区三区 | 亚洲精品国产男人的天堂 | 男女性高爱潮免费的国产 | 波多野结衣一级视频 | 91精品一区二区三区在线观看 | 全部免费的毛片在线看美国 | 亚洲资源在线观看 | 奇米色88欧美一区二区 | 91久久精品视频 | 欧美视频在线看 | 久草在线视频看看 |