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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王艳静 中级黑马   /  2015-8-12 21:51  /  363 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.itheima;

  2. /**
  3. * 8、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
  4. * @author 王艳静
  5. */
  6. public class Test08 {
  7.         public static void main(String[] args) {
  8.                 System.out.println(method());
  9.         }
  10.         public static String method(){
  11.                 try{
  12.                         String str = "我是return。";//被检测代码块
  13.                         return str;
  14.                 }finally{
  15.                         String str = "我是finally。";
  16.                         System.out.println(str);//必须执行代码块
  17.                 }
  18.         }
  19.        
  20. }
复制代码
上面是我的基础测试题的代码。运行结果是:
         我是finally。         我是return。
由结果得就是finally先于try中的return执行。
我的疑惑是:
        return返回的值输出在控制台是决定于main函数中的输出语句。所以不能得出finally优先于return执行。

        我没有想到更好的方法,请大家指教。

评分

参与人数 1黑马币 +5 收起 理由
T-l-H、小生 + 5 讲得挺不错~~~

查看全部评分

6 个回复

倒序浏览
Queen_one 来自手机 中级黑马 2015-8-12 21:52:21
沙发
诶诶诶 这个好像在哪里见过…
回复 使用道具 举报
Queen_one 发表于 2015-8-12 21:52
诶诶诶 这个好像在哪里见过…

没有吧
回复 使用道具 举报
等finally语句执行完了再返回结果
回复 使用道具 举报
继续加油
回复 使用道具 举报
本帖最后由 王艳静 于 2015-8-13 10:28 编辑
  1. package com.itheima;

  2. /**
  3. * 8、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
  4. * @author 王艳静
  5. */
  6. public class Test08 {
  7.         public static void main(String[] args) {
  8.                 System.out.println(method());
  9.         }
  10.         @SuppressWarnings("finally")
  11.         public static String method(){
  12.                 try{
  13.                         System.out.println("try语句正在执行。");//被检测代码块
  14.                         return "我是try语句中的return。";
  15.                 }finally{
  16.                         System.out.println("fanally语句正在执行。");
  17.                         return "我是fanally语句中的return。";//必须执行代码块
  18.                 }
  19.         }        
  20. }
  21. /*
  22. * 分析:
  23. * 为避免主函数中语句的影响,所以在fanally代码块中也写入了return语句。
  24. * 主函数中输出什么哪条语句就说明哪个代码块中的return语句先执行。
  25. * 运行结果为:
  26. *                 try语句正在执行。
  27. *                 fanally语句正在执行。
  28. *                 我是fanally语句中的return。
  29. * 说明:finally优先于try中的return执行。
  30. *
  31. * */
复制代码
回复 使用道具 举报

这是修改后的代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马