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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qmlovewhr 中级黑马   /  2013-7-6 16:52  /  1073 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 赵海洋 于 2013-7-6 18:27 编辑

public class smallT
{
public static void main(String[] args)
{
  smallT t=new smallT();
  int b=t.get();
  System.out.println(b);
}
public int get()
{
  try
  {
   return 2;
  }
  catch (Exception e)
  {
   return 3;
  }
  finally
  {
   return 4;
  }
   
}
}
我记得学习的时候说有返回值的方法,执行完return语句后就会停止了,另一方面我也知道在try.....catch语句中finally也是
一定要执行的,所以我试了代码运行,结果输出为:4.但是我有些不解,为什么会是这样一个结果,请高手帮忙解释下。

3 个回复

倒序浏览
有finally的时候,finally里面有return,就是这个return管用,没有return,就是外面的retrun管用

评分

参与人数 1黑马币 +5 收起 理由
赵海洋 + 5 回答问题求详细

查看全部评分

回复 使用道具 举报
finally语句中的代码是在任何情况下都会执行的,所以在try中遇到return时,程序先不中断,而是先执行finally中的语句,在finally中有return,程序就直接停止了,不再去执行try中的return
回复 使用道具 举报
第一个return是将函数的局部参数压栈,fianlly的return也将参数压栈,最后返回,参数出栈,调用者获得第二个参数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马