祁焱 发表于 2011-12-28 11:44
finally中的语句是执行在try中的return前还是return后,你可以用一下代码测试一下:
public static void m ...
首先要道歉,我在公司没环境,看了别人的例子,那里说finally有return会报错。所以觉得不对,上来问问,并没有操作。还有你没明白我的意思,我说如果try和finally中都有return,并且返回值不同,最后返回谁?
我回来后马上验证了。finally中可以有return,如果try和finally中都有return,返回finally中的。- class ReturnDemo
- {
- public static void main(String[] args)
- {
- int a = 0;
-
- System.out.println("a:"+sop(a));
- }
- public static int sop(int a)
- {
- try
- {
- System.out.println("try被"+ (++a) +"执行"+","+"a:"+a);
- return a*100;
- }
- catch (Exception e)
- {
- System.out.println(e.toString());
- }
- finally
- {
- System.out.println("finally被执行"+","+"a:"+a);
- return a*10;
- }
- }
- }
复制代码 结果:
try被1执行,a:1
finally被执行,a:1
a:10 |