黑马程序员技术交流社区

标题: try与finally的问题?? [打印本页]

作者: 小蚊子    时间: 2013-12-23 23:13
标题: try与finally的问题??
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
作者: 夏德宇    时间: 2013-12-23 23:27
finally: 最后;终于 的意思,肯定会执行到,不管前面有什么,在后面执行。
作者: 王国库    时间: 2013-12-23 23:28
执行了  楼主可以在finally里加一条输出语句试一试,在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。执行完finally之后,再返回结果,
作者: 胡永城    时间: 2013-12-23 23:54
本帖最后由 胡永城 于 2013-12-23 23:56 编辑

先执行的return 在执行finally
以下为代码验证:
  1. public class Test7 {
  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub
  4.                 // 定义一个作为标示的值,在打印的字符串中,谁的j值小,谁首先运行
  5.                 int j;
  6.                 for (j = 0; j < 3; j++) {
  7.                         try {
  8.                                 System.out.println("break:j= "+(++j));
  9.                                 break;//验证break与finally的执行顺序。
  10.                         } catch (Exception e) {
  11.                                 e.printStackTrace();
  12.                         } finally {
  13.                                 System.out.println("finally:j= " + (++j));
  14.                         }
  15.                 }
  16.                
  17.                 // 定义一个作为标示的值,在打印的字符串中,谁的i值小,谁首先运行
  18.                 int i = 0;
  19.                 // // 当代码块可能产生异常时,用try {} catch () {}语句包裹。
  20.                 try {
  21.                         System.out.println("try : i = " + (++i));
  22.                         test(1, 0);
  23.                 } catch (ArithmeticException e) { // 捕获ArithmeticException异常对象,在代码块中处理
  24.                         System.out.println("return  : i = " + (++i));
  25.                         return;
  26.                 } finally {
  27.                         System.out.println("finally  : i = " + (++i));
  28.                 }
  29.         }

  30.         // 定义一个可能会产生异常的函数,并抛出交由调用者处理
  31.         private static int test(int a, int b) throws ArithmeticException {
  32.                 return a / b;
  33.         }
  34. }
复制代码

作者: FFF    时间: 2013-12-24 08:35
胡永城 发表于 2013-12-23 23:54
先执行的return 在执行finally
以下为代码验证:

哈哈哈哈~~~




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