读书人

try中有return 跟finally哪个先执行

发布时间: 2012-09-29 10:30:01 作者: rapoo

try中有return 和finally哪个先执行

Java code
package me.luger.base;public class FinallyReturnTest {    public static void main(String[] args) {        tt();    }    // finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。    static Return tt() {        try {            return new Return("try");        } catch (Exception e) {            e.printStackTrace();        } finally {            System.out.println("finally");        }        return new Return("outter");    }}class Return {    Return(String name) {        System.out.println("return " + name);    }}


我在网上看的说是finally在return前执行 但是按我这么写的话是return先执行呀?是不是我理解错了

[解决办法]
finally最后执行,即使你先return了
[解决办法]
函数遇到return,就已经返回了,但是返回的值保存在内存之中,所有要等整个函数执行完之后函数才真正的返回。看下面:
Java code
public class Test {    /**     * @param args     */    public static void main(String[] args) {        System.out.println(getString());    }    static String getString(){        try{            return "SUCCESS";        }catch(Exception e){                    }finally{            System.out.println("Finally is executing");            return "ERROR";//如果这句放在finally之外呢?        }            }}
[解决办法]
探讨
finally最后执行,即使你先return了

读书人网 >J2SE开发

热点推荐