简介:try-catch-finally异常处理模块的返回值为题
- 考点:编码规范和执行逻辑
- 下面代码的 try-catch-finally语句,try里面有个return,finally里面也有个return,结果会返回什么?为什么?
public static int test1() {
int a = 1;
try {
System.out.println(a / 0);
a = 2;
} catch (ArithmeticException e) {
a = 3;
return a;
} finally {
a = 4;
}
return a;
}
public static int test2() {
int a = 1;
try {
System.out.println(a / 0);
a = 2;
} catch (ArithmeticException e) {
a = 3;
return a;
} finally {
a = 4;
return a;
}
}
答案:
在执行try,catch中的return之前一定会执行finally中的代码(如果finally存在),如果finally中有return语句,就会直接执行finally中的return方法,所以finally中的return语句一定会被执行的
执行流程: finally执行前的代码里面包含return,则会先确定return返回值,然后在执行finally的代码,最后在执行return
实际开发中,一定不能这样写!