一个方法中两个return

小小幸福哟 2014-08-15 04:22:58
发现这样一个方法
public String createJson(){
try{
JSONObject jsonObject=new JSONObject();
jsonObject.put("id","1");
jsonObject.put("name","李磊");
jsonObject.put("age",30);
return jsonObject.toString();
}catch(Exception e){
e.printStackTrace();
}
return "";
}

这其中两个return怎么解释,是第一个return直接就结束方法了么,不是有返回值的return,完事儿后应该继续向下执行吗,求高人指点啊
...全文
654 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
whhmkj 2014-08-18
  • 打赏
  • 举报
回复
你的基础有点差啊 当其中一个return返回之后剩下的代码就不会执行了
shmy110 2014-08-18
  • 打赏
  • 举报
回复
引用 9 楼 nich002 的回复:
[quote=引用 8 楼 shmy110 的回复:] 那为什么 第二个return不写在catch里
try catch 完整的是少个finally{}的, finally{} 是最终无论如何都执行的. return 写在try里是正常执行想要的返回结果 catch 里是发生异常时 返回的结果. 但是有时候 并非上述两种情况就可以概括所有, 所以 写在catch外的return 类似finally里的return, 就是如果try里面没有正常执行, 那么不管有没有发生异常都要执行最下面的return, 这个return 写在finally中你就能懂了.[/quote] 已秒懂
于瓜瓜 2014-08-18
  • 打赏
  • 举报
回复
引用 8 楼 shmy110 的回复:
那为什么 第二个return不写在catch里
try catch 完整的是少个finally{}的, finally{} 是最终无论如何都执行的. return 写在try里是正常执行想要的返回结果 catch 里是发生异常时 返回的结果. 但是有时候 并非上述两种情况就可以概括所有, 所以 写在catch外的return 类似finally里的return, 就是如果try里面没有正常执行, 那么不管有没有发生异常都要执行最下面的return, 这个return 写在finally中你就能懂了.
shmy110 2014-08-18
  • 打赏
  • 举报
回复
那为什么 第二个return不写在catch里
小小幸福哟 2014-08-15
  • 打赏
  • 举报
回复
我明白了……
innight 2014-08-15
  • 打赏
  • 举报
回复
《Thinking in Java》一书中原话:return关键字的用法,它包括两方面:首先,它代表“已经做完,离开此方法”。其次,如果此方法产生了一个返回值,这个值要放在return语句后面。
yinan9 2014-08-15
  • 打赏
  • 举报
回复
一楼正确。 如果没有异常,则执行 return jsonObject.toString(), 第二个return不可达。 如果在第一个return之前发生异常,最终将执行return "";
shixitong 2014-08-15
  • 打赏
  • 举报
回复
public String createJson(){
   JSONObject jsonObject=null;
    try{
        jsonObject=new JSONObject();
        jsonObject.put("id","1");
        jsonObject.put("name","李磊");
        jsonObject.put("age",30);
    }catch(Exception e){
        e.printStackTrace();
    }

    return  null!=jsonObject?jsonObject.toString():"";
}
也可以这么写,估计好理解点
  • 打赏
  • 举报
回复
引用 2 楼 sca4441479 的回复:
这里编译器认为try catch里的return有可能走不到,所以第二个return是有机会走的,就和if判断一样。
道理同上,你要是发生异常了..catch之后呢? 肯定需要一个return的啦
sca4441479 2014-08-15
  • 打赏
  • 举报
回复
这里编译器认为try catch里的return有可能走不到,所以第二个return是有机会走的,就和if判断一样。
ningbohezhijun 2014-08-15
  • 打赏
  • 举报
回复
第1个return很好理解吧,第2个return是当你catch到异常的时候,在catch块结束后执行的。因为异常发生的可能是在第一个return语句之前(这分代码中如果发生异常,则我认为一定是发生在第一个return之前)

67,516

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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