try catch finally执行顺序

1、finally中含有return语句

 int i = 0;
        try {
            System.out.println("this is try block");
            return 1;
        } catch (Exception e) {
            System.out.println("this is catch block");
            return 2;
        } finally {
            i = 10;
            System.out.println("this is finally block");
            return i;
        }

未出现异常输出顺序如下:
在这里插入图片描述

public static int test(){
        int i = 0;
        try {
            System.out.println("this is try block");
            int result = 1/i;
            return 1; //  throw new Exception("exception");
        } catch (Exception e) {
            System.out.println("this is catch block");
            return 2;
        } finally {
            i = 10;
            System.out.println("this is finally block");
            return i;
        }
    }

出现异常时,输出结果如下:
在这里插入图片描述

当将try 中return语句改为throw new Exception(“exception”),结果同上。

2、finally中不包含return 语句

  1. 正常代码执行
  public static int test(){
      int i = 0;
      try {
          System.out.println("this is try block");
          return 1;
      } catch (Exception e) {
          System.out.println("this is catch block");
          return 2;
      } finally {
          i = 10;
          System.out.println("this is finally block");
      }
  }

输出结果如下:

在这里插入图片描述

2.代码包含异常情况:

public static int test(){
     int i = 0;
     try {
         System.out.println("this is try block");
         int a = 5/0;
         return 1;
     } catch (Exception e) {
         System.out.println("this is catch block");
         return 2;
     } finally {
         i = 10;
         System.out.println("this is finally block");
     }
 }

结果如下:
在这里插入图片描述

总结:

    代码块中无死循环,或者强制退出,以及程序中止的情况,若finally中有return语句一定会执行该return语句,即使try、catch中已经使用了return语句。否则即使finally对需要返回的变量进行了操作,最终返回的还是以try或者catch返回结果为准。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值