try-catch 中 try块中 return执行问题

 虽然实际开发中不会遇到这样的情况,但是笔试面试时有关异常经常会问到如下情况:

复制代码
public class ExceptionTest5
{

    public void method()
    {
        try
        {
            System.out.println("进入到try块");
            
            //return;
            //会先执行finally块再返回
            
            //虚拟机退出
            //System.exit(0);
            //不会执行finally块中的语句,直接退出
        }
        catch (Exception e)
        {
            System.out.println("异常发生了!");
            
        }
        finally
        {
            System.out.println("进入到finally块");
            
        }
        
        System.out.println("后续代码");
        
    }
    
    public static void main(String[] args)
    {
        ExceptionTest5 test = new ExceptionTest5();
        test.method();
    }
}
复制代码


  在加上return语句前,程序输出:

    进入到try块

    进入到finally块

    后续代码

 

  如果在try块中加入return语句:

  程序执行输出:

    进入到try块

    进入到finally块

 

  说明try块中有return语句时,仍然会首先执行finally块中的语句,然后方法再返回。

  如果try块中存在System.exit(0);语句,那么就不会执行finally块中的代码,因为System.exit(0)会终止当前运行的Java虚拟机,程序会在虚拟机终止前结束执行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值