- 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之外呢? } }}
------解决方案--------------------------------------------------------