软件构造(8)对try-catch-finally的疑问与解决

本文探讨了在Java中finally语句的执行情况,包括当try中使用System.exit(0)、try未执行、finally对try中return值的影响,以及finally中存在return语句时如何覆盖try的返回值。总结了finally执行的条件和return值的确定规则。
摘要由CSDN通过智能技术生成

在上课的过程中,有讲到finally中的return会在catch中return后继续执行,那么是否finally中的语句都会被执行?这个问题是值得探究的。通过查找资料和实践,我解决了这个疑问

首先,我们知道不略是否catch到异常,finally语句都是会执行的,那么有没有不执行到的情况呢?

情况一
try {
   
       System.exit(0);
       throw new Exception();
    }
    finally {
   
        System.out.println("Here is finally");
    }

如果在try语句使用System.exit(0)让程序直接退出,那么finally语句是不会执行到的。

try {
   
            throw new RuntimeException();
        }catch(Exception e) {
   
               System.exit(0);
        }
        finally {
   
            System.out.println("Here is finally");
        } 

当然,在捕获到异常后在handler中使用Sytstem.exit(0)也是可以跳过finally语句的。

情况二

如果在try-catch-finally语句中。try语句没有被执行到,那么显然finally语句也不会执行

下面看看finally语句是否会对try语句中的赋值产生影响

1
  public static void main(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值