public class Test {
public static void main(String[] args) {
// 为什么这里是输出:0
System.out.println("testTry():" + testTry());
}
public static int testTry() {
int i = 0;
try {
return i;
} catch (Exception e) {
e.printStackTrace();
} finally {
++i;
}
return 0;
}
}
我用调式跟踪了一下:
执行下一步:
此时 i 的值为0,从代码上在的视图窗口中可以看到value 为 0
继续执行:
这时由于第34行还没得到执行,所以 i 的值依然为0
继续执行:
我们可以看到,执行又返回到try块的return语句那里了,这时 i 的值为 1
根据常识我们应该都会认为这里会将1给返回的。
继续执行:
此时又返回到输出语句处。
继续执行:
结果却输出的是0!!!!!谁能告诉我这是为什么?眼见不为实?我可是亲自跟踪调试看到值为1的啊啊啊啊啊求解。。。。
|