当前位置: 代码迷 >> J2SE >> try中有return 跟finally哪个先执行
  详细解决方案

try中有return 跟finally哪个先执行

热度:3887   发布时间:2013-02-25 00:00:00.0
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了
  相关解决方案