A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小蚊子 中级黑马   /  2013-12-23 23:13  /  1360 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 比较基础的题目。明显混分的坏银~~.

查看全部评分

4 个回复

倒序浏览
finally: 最后;终于 的意思,肯定会执行到,不管前面有什么,在后面执行。
回复 使用道具 举报
执行了  楼主可以在finally里加一条输出语句试一试,在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。执行完finally之后,再返回结果,
回复 使用道具 举报
本帖最后由 胡永城 于 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. }
复制代码

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 回答得很好、但没分!

查看全部评分

回复 使用道具 举报
FFF 金牌黑马 2013-12-24 08:35:53
报纸
胡永城 发表于 2013-12-23 23:54
先执行的return 在执行finally
以下为代码验证:

哈哈哈哈~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马