如果finally块中有return语句的话,它将覆盖掉函数中其他return语句

public class Demo {
    public static void main(String args[]) {
        int num = 10;
        System.out.println(test(num));
    }

    public static int test(int b) {
        try {
            b += 10;
            return b;
        } catch (RuntimeException e) {
        } catch (Exception e2) {
        } finally {
            b += 10;
            return b;
        }
    }
}

解析:

如果 finally 块中有 return 语句的话,它将覆盖掉函数中其他 return 语句:

程序运行到 try块,b=20;并没有发生异常,不运行catch块,运行到 return b;因为finally块无论如何都要运行,因此并不发生返回动作,进行运行finally块,b=30;

进行程序返回输出;