这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?
- 问:这段代码的返回值在出现异常和不出现异常的情况下,分别应该是多少?《深入理解Java虚拟机(第3版)》代码清单6-5
public int inc() {
int x;
try {
x = 1;
return x;
} catch (Exception e) {
x = 1;
return x;
} finally {
x = 3;
}
}
答:从Java代码的语义上讲,这三条执行路径分别为:
- 如果try语句块中出现属于Exception或其子类的异常,转到catch语句块处理;
- 如果try语句块中出现不属于Exception或其子类的异常,转到finally语句块处理;
- 如果catch语句块中出现任何异常,转到finally语句块处理。
如果没有出现异常,返回值是1;如果出现了Exception异常,返回值是2;如果出现了Exception以外的异常,方法非正常退出,没有返回值。