首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

try中有return 跟finally哪个先执行

2012-09-29 
try中有return 和finally哪个先执行Java codepackage me.luger.basepublic class FinallyReturnTest {pub

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了

热点排行