- 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