----------------------------------------------------------------------------------------------------------------------------------------------------------

 泡牛吧!

                                       希望越来越多的光棍能够泡到牛

-----------------------------------------------------------------------------------------------------------------------------------------------------------

finally语句一定会执行么? (转)

finally语句一定会执行么?

前几天有一个朋友去面试,被问到这样一个问题,如下
 1 public   class  smallT
 2 {
 3      public   static   void  main(String args[])
 4      {
 5         smallT t  =   new  smallT();
 6          int  b  =  t.get();
 7         System.out.println(b);
 8     }

 9      public   int  get()
10      {
11        try
12          {
13              return   2 ;
14         }

15        catch (Exception e)
16          {
17              return   3 ;
18         }

19        finally
20          {
21              return   4 ;
22         }

23     }

24 }

25  
输出:
4
我记得学习的时候说有返回值的方法,执行完return语句后就会停止了;另一方面我还记得在try……catch语句中finally语句也是一定要执行的。于是在这里就产生了麻烦。试了一下,发现果然是执行了finally中的值。正好这两天公司在培训,我便把这个问题提给java很厉害的一个讲师,他用断点测试了一下,说是两个值都返回了……

我又改了一小下,在get方法中逐个添上了输出信息到控制台的语句,发现居然能执行。如下
 1public class test
 2{
 3    public static void main(String args[])
 4    {
 5        test t = new test();
 6        int b = t.get();
 7        System.out.println("Third: a = "+b);
 8    }

 9    public int get()
10    {
11      try
12        {
13         System.out.println("First: a = "+2);
14         return 2;
15        }

16      catch(Exception e)
17        {
18         System.out.println(3);
19        }

20      finally
21        {
22            System.out.println("Second: a = "+4);
23            return 4;
24        }

25    }

26}

27 

输出:
First: a = 2
Second: a = 4
Third: a = 4

可这明明是一个需要返回一个int整数的方法啊。
不明白了,请大家解疑。
haohao   2007-03-12 18:14:24 评论:0   阅读:96   引用:0

发表评论>>

署名发表(评论可管理,不必输入下面的姓名)

姓名:

主题:

内容: 最少15个,最长1000个字符

验证码: (如不清楚,请刷新)

一切版权属于个人(转载例外)