黑马程序员技术交流社区

标题: 异常的小return 和final问题 [打印本页]

作者: 人心如水    时间: 2014-6-14 12:00
标题: 异常的小return 和final问题
用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly? 自己很糊涂
作者: 倪大大    时间: 2014-6-14 12:20
finally是一定要执行的.不管怎么样,他会覆盖你try中的return
作者: 人心如水    时间: 2014-6-14 13:21
谁先执行啊,要的就是执行顺序的证明
作者: 博€$€海    时间: 2014-6-14 14:05
最后执行fianlly,return可能会被覆盖掉
作者: 雾里看花。    时间: 2014-6-14 21:03

最后执行fianlly,return可能会被覆盖掉
作者: 轩辕冰晨    时间: 2014-6-14 21:17
应该是先执行return 的吧,fianlly中的代码不管如何最后都是要执行的
作者: 2528870651    时间: 2014-6-14 21:19
自己运行这个代码试试:
  1. class ExceptionTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int n = fun(2);
  6.                 System.out.println("打印fun()函数返回的n值=  "+n);
  7.         }
  8.         public static int fun(int i)
  9.         {
  10.                 try
  11.                 {
  12.                         int m= i/0;
  13.                         return i++;
  14.                 }
  15.         
  16.                 catch (ArithmeticException e)
  17.                 {
  18.                         System.out.println("异常信息:"+e);
  19.                         System.out.println("catch 中的i = "+i);
  20.                         return i+3;   //返回的是 2+3, 而不是finally中对i的赋值再来加上3,
  21.                                                         //finally中对i的操作,不会影响此时catch中的return i+3

  22.                 }
  23.                
  24.                 finally
  25.                 {
  26.                         i++;
  27.                         i++;
  28.                         System.out.println("finally 执行  "+i);
  29.                         //return i+8;   //如果这里没注释
  30.                                                         //这里会返回12,而不会去返回catch中的  return i+3
  31.                 }
  32.         }
  33. }
复制代码

作者: 人心如水    时间: 2014-6-14 21:29
2528870651 发表于 2014-6-14 21:19
自己运行这个代码试试:

万分感谢
作者: 2528870651    时间: 2014-6-14 22:33
人心如水 发表于 2014-6-14 21:29
万分感谢

我以前问过这个问题的
作者: 孙林    时间: 2014-6-14 22:48
fanally是一定会执行的,return就不一定了,要看你程序有没有跳进你的return里。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2