如果try,finally中有return怎么办

今天我们就trycatch异常捕获块中出现return的各种情况做一个讲解:

一、try和finally中同时出现return

public static void main(String[] args) {
    int k = f_test();
    System.out.println(k);
}

public static int f_test(){
    int a = 0;
    try{
        a = 1;
        return a;
    }
    finally{
        System.out.println("It is in final chunk.");
        a = 2;
        return a;
    }
}

输出 It is in final chunk.

2

二、try中有return语句,finally块中没有

public static void main(String[] args) { int k = f_test(); System.out.println(k); }

public static int f_test(){
    int a = 0;
    try{
        a = 1;
        return a;
    }
    finally{
        System.out.println("It is in final chunk.");
        a = 2;

    }
}

输出 It is in final chunk

1

对这种情况的解释:

1.在trycatch中有return时,执行顺序为 trycatch块中return之前的语句->finally中的语句->try、catch中return语句

2.try和finally中同时出现return,finally中的return语句会覆盖掉try块中的return语句

3.try中有return语句,finally块中没有,即使finally块对try块中return变量的值做出了更改,最后方法返回的依然是try块中变量的值。