今天发现异常的一个问题,求权威解释~
Java code
public static int test() {
int i = 0;
try {
fun1();
fun2();
i = -1;
System.out.println("try end");
return i;
} catch (Exception e) {
System.out.println("catch");
i = -2;
return i;
} finally {
i = 1;
System.out.println("finally");
}
}
以上代码正常执行返回-1,fun1、fun2抛异常,返回-2
但在单步调试的时候看到在返回之前已经进入了finally里面,而且把i的值改为了1,可方法返回后还是原来的值(-1或者-2),求解~
------解决方案-------------------- } catch (Exception e) {
System.out.println("catch");
i = -2;
return i;
} finally {
i = 1;
System.out.println("finally");
}
在return i;之前 ,先把i放到一个临时变量中 ,然后 运行 finally部分代码 ,接着 返回临时变量。
------解决方案--------------------http://topic.csdn.net/u/20120607/07/9d3a5948-ca38-4eb9-a4f8-63400b34e13a.html