下面那个例子的输出结果是:
func1
func2
2就是不知道这个2是怎么出来的??? 谢谢大家,帮忙看看吧。//////////////////////////////////////////////////////////////////////////package com.yujian.exception;public class ReturnDemo { public static void main(String[] args) {
System.out.println(new ReturnDemo().test());
}    int test()    {       try       {
           return func1();
       }
       
       //finally是异常处理语句结构的一部分,表示总是执行。
       finally       {
           return func2();
       }    }        int func1()    {       System.out.println("func1");       return 1;    }    int func2()    {       System.out.println("func2");       return 2;    }   }//////////////////////////////////////////////////////////////////////////

解决方案 »

  1.   

    其实就是在fun1返回之前会执行finally里面的代码,也就是fun2,但是fun2就return 2;所以就不会再去fun1里面去返回了。
      

  2.   

    这个你自己可以体会一下,你把finally里面那个return fun2()给去掉,随便给一个输出语句,或者什么都不写,它会报错,原因是test()的返回值必须是int类型。而在try()里面这样去做则不会报任何错误,这样就能证明,try/finally语句块的返回值只跟finally里面的返回值有关,跟try模块没有关系!这样看来你的例子的答案就很明显易懂了,互勉!!!