如果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;
进行程序返回输出;