try-catch-finally的return 好混乱~~~

Liuyfly 2013-07-11 05:15:37

public class Test22 {
public static void main(String[] args) {
System.out.println(tt());
}

public static int tt() {
int b = 23;
try {
System.out.println("yes");
return b = 88;
} catch (Exception e) {
System.out.println("catch");
} finally {
b = 90;
if (b > 25) {
System.out.println("b>25:" + b);
}
b = 10;
System.out.println("finally");
}
b = 100;
return b;
}
}

这段代码打印结果是什么?求分析。。。
...全文
135 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
syy_syy 2013-07-11
  • 打赏
  • 举报
回复
任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。 所以这段代码的话,先执行try,打印出yes;在return之前执行finally中语句打印出 b>25:90 finally,最后执行try中的return语句 b=88。所以最终结果为88.
lcf 2013-07-11
  • 打赏
  • 举报
回复
在try里面看到return和finally,先计算出return应该返回的值,暂存,再执行finally块,最后返回暂存的值。 所以你看到的是yes b>25:90 finally 88。其实真要你迷糊,b=90那句应该去掉。然后你会看到b>25:88,这样才能证明我说的是对的 这里return b=88;变成了这样:
int temp ret = (b = 88);
// b变成了88
finally {
 ...
}
return temp;
rencht 2013-07-11
  • 打赏
  • 举报
回复
这个帖子分析得比较好^_^ 关于 Java 中 finally 语句块的深度辨析
Liuyfly 2013-07-11
  • 打赏
  • 举报
回复
自己顶一下

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧