栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础-探究Try Catch Finally Return的各种情况,究竟是怎么返回的

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础-探究Try Catch Finally Return的各种情况,究竟是怎么返回的

探究原因:如果在Try Catch中有Return,那么存在Finally的时候,到底那一部分会执行呢???

结果:执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,idea会警告在finally中使用return。

例1:try { } catch() { } finally { } return;

按顺序执行,没有问题

例2:try { return; } catch() { } finally { } return;

先执行try中return之前代码, 再执行finally块,最后执行try中return;finally块之后的语句return,因为程序在try中已经return所以不再执行。

例3:try { } catch() { return; } finally{} return;

程序先执行try,如果遇到异常执行catch块,
    有异常:则执行catch中return之前(包括return语句中的表达式运算)代码,再执行finally语句中全部代码,最后执行catch块中return. finally之后也就是4处的代码不再执行。

    无异常:执行完try再finally再return.

例4:try { return; } catch() { } finally {return;}

程序执行try块中return之前代码;再执行finally块,因为finally块中有return所以提前退出。

例5:try {} catch(){return;}finally{return;}

程序执行catch块中return之前代码;再执行finally块,因为finally块中有return所以提前退出。

例6:try{ return;}catch(){return;} finally{return;}

程序执行try/catch块中return之前代码;再执行finally块,因为finally块中有return所以提前退出。

最终结论:任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。
如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,
编译器把finally中的return实现为一个warning。

参考资料:https://blog.csdn.net/kavensu/article/details/8067850

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号