当前位置: 代码迷 >> J2SE >> 今天发现错误的一个有关问题,求权威解释
  详细解决方案

今天发现错误的一个有关问题,求权威解释

热度:1610   发布时间:2013-02-25 00:00:00.0
今天发现异常的一个问题,求权威解释~
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
  相关解决方案