首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于Java中return和finally的执行顺序

如下代码:

在try或者catch语句里面,如果有return语句,那么finally会不会执行?

即使有return语句,finally块在执行完try或者catch块代码之后是会被调用的,但是特殊情况下finally块语句是不会被执行的,如下几种情况:

(1)在try和catch块之中执行System.exit()方法直接退出虚拟机

(2)jvm突然崩溃或者机器宕机等硬件故障

(3)执行了无限循环,或者其他不可被打断,不可被终止的语句

(4)执行了kill -9 pid 命令

此外,要避免一些坏的编程风格:

(1)在finally中使用return语句,虽然java是支持的,但一旦在finally中使用return那么try和catch中的return就不会被执行。

(2)不要在finally中修改变量数据,比如赋值类操作。

上面的这两种编程习惯,在java层面都是支持的,这样的代码虽然能正常运行,但是可读性非常差而且难以维护。

总结:

finally语句块在Java里面最大的作用是避免资源泄露问题,通常用于当程序发生异常或者正常执行结束时用来关闭各种资源连接的,所以在使用的时候一定要注意,尽量不要做一些其他的业务逻辑或者在里面使用return语句从而避免其导致的不可预料或者难以维护的问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722B16ZW500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券