电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:2日期: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
相關文章:
主站蜘蛛池模板: 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 中国品牌门窗网_中国十大门窗品牌_著名门窗品牌 | 散热器-电子散热器-型材散热器-电源散热片-镇江新区宏图电子散热片厂家 | 亚克隆,RNAi干扰检测,miRNA定量检测-上海基屹生物科技有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 选宝石船-陆地水上开采「精选」色选机械设备-青州冠诚重工机械有限公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 便民信息网_家电维修,家电清洗,开锁换锁,本地家政公司 | 品牌广告服务平台,好排名,好流量,好生意。 | 广东风淋室_广东风淋室厂家_广东风淋室价格_广州开源_传递窗_FFU-广州开源净化科技有限公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 活性炭-果壳木质煤质柱状粉状蜂窝活性炭厂家价格多少钱 | 小型手持气象站-空气负氧离子监测站-多要素微气象传感器-山东天合环境科技有限公司 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 卫生纸复卷机|抽纸机|卫生纸加工设备|做卫生纸机器|小型卫生纸加工需要什么设备|卫生纸机器设备多少钱一台|许昌恒源纸品机械有限公司 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 实验室装修_实验室设计_实验室规划设计- 上海广建净化工程公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | PVC快速门-硬质快速门-洁净室快速门品牌厂家-苏州西朗门业 | 艾乐贝拉细胞研究中心 | 国家组织工程种子细胞库华南分库 | 三佳互联一站式网站建设服务|网站开发|网站设计|网站搭建服务商 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 磁力轮,磁力联轴器,磁齿轮,钕铁硼磁铁-北京磁运达厂家 | 莱州网络公司|莱州网站建设|莱州网站优化|莱州阿里巴巴-莱州唯佳网络科技有限公司 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 空调风机,低噪声离心式通风机,不锈钢防爆风机,前倾皮带传动风机,后倾空调风机-山东捷风风机有限公司 | 搜活动房网—活动房_集装箱活动房_集成房屋_活动房屋 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 东莞韩创-专业绝缘骨架|马达塑胶零件|塑胶电机配件|塑封电机骨架厂家 | 全自动翻转振荡器-浸出式水平振荡器厂家-土壤干燥箱价格-常州普天仪器 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 九爱图纸|机械CAD图纸下载交流中心 | 今日扫码_溯源二维码_产品防伪一物一码_红包墙营销方案 | 吉林污水处理公司,长春工业污水处理设备,净水设备-长春易洁环保科技有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 酒糟烘干机-豆渣烘干机-薯渣烘干机-糟渣烘干设备厂家-焦作市真节能环保设备科技有限公司 | 承插管件_不锈钢承插管件_锻钢高压管件-温州科正阀门管件有限公司 | 不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰]-不锈钢法兰-碳钢法兰-法兰盘生产加工厂家-[鼎捷峰] |