读书人

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

发布时间: 2012-09-21 15:47:26 作者: rapoo

今天发现异常的一个问题,求权威解释~

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

读书人网 >J2SE开发

热点推荐