public class JPanelTest {
public int test() {
try {
System.out.println("[1]");
return 1;
} finally {
System.out.println("[2]");
return 2;
}
}
public static void main(String[] args) {
JPanelTest jt = new JPanelTest();
System.out.println(jt.test());
}
}
结果是:
[1]
[2]
2
这样的话,第一个return 1;就显得是无用的了
有没有其他方法直接跳出try到finally去?

解决方案 »

  1.   

    finally中的语句块永远是在return之前执行的 如果这些语句块中又包含return 那try中的return 当然不会起作用了
      

  2.   

    finally总是被执行的,你去掉return 1;结果也是
    [1] 
    [2] 
    2
    你的try中可以什么都不写,就直接执行finally了
      

  3.   

    学习,不看不知道,一看很迷茫!
    拿好纸笔记下:finally中的语句块永远是在return之前
      

  4.   

    好像没办法,一般的执行顺序是
    try{  codeparameter a;
      return c;
    }finally{
      codeparameter b;
    }执行顺序是:
    先执行try里面的a;
    接着是执行finally里面的b;
    然后是return c;
    finally始终是要执行的,除非你重写语句。
      

  5.   

    在try块里人为制造一个Exceptiontry {
        System.out.println(1/0);
        return 1;
    } finally {
        System.out.println("[2]");
        return 2;
    }