try,finally中都有return时程序的执行顺序

try代码块中包含return语句,finally代码块中不包含return语句;package Exception;

public class Test02 {
    public static void main(String[] args) {
            System.out.println(test());
    }
    public static int test(){
            try{
                int i=1;
                return i;
            }
            finally{
                int i=2;
                System.out.println(i);
            }
    }
}

结果

2
1

try代码块和finally代码块中都有return语句

public class Test01 {

    public static void main(String[] args) {
        
        System.out.println(test());
    }
    
public  static int  test(){
        try{
            int i = 1;
            return i;
           }
        finally{
            int j = 2;
            return j;
        }
}   
}

结果

2

结论

1.如果try代码块里有return语句,而finally代码块里没有return语句,程序会先执行finally代码块里的代码然后再执行try代码块里的return语句;

2.如果try代码块和finally代码块里都有return语句,try代码块里的return语句会优先finally代码块里的return语句执行,但不会把返回的结果返回给主函数,而是会把finally代码块里return的结果返回给主函数。

猜你喜欢

转载自www.cnblogs.com/ctrlcoder/p/11670002.html