一个方法中两个return

问题描述

发现这样一个方法publicStringcreateJson(){try{JSONObjectjsonObject=newJSONObject();jsonObject.put("id","1");jsonObject.put("name","李磊");jsonObject.put("age",30);returnjsonObject.toString();}catch(Exceptione){e.printStackTrace();}return"";}

这其中两个return怎么解释,是第一个return直接就结束方法了么,不是有返回值的return,完事儿后应该继续向下执行吗,求高人指点啊

解决方案

解决方案二:
第1个return很好理解吧,第2个return是当你catch到异常的时候,在catch块结束后执行的。因为异常发生的可能是在第一个return语句之前(这分代码中如果发生异常,则我认为一定是发生在第一个return之前)
解决方案三:
这里编译器认为trycatch里的return有可能走不到,所以第二个return是有机会走的,就和if判断一样。
解决方案四:
引用2楼sca4441479的回复:

这里编译器认为trycatch里的return有可能走不到,所以第二个return是有机会走的,就和if判断一样。

道理同上,你要是发生异常了..catch之后呢?肯定需要一个return的啦
解决方案五:
publicStringcreateJson(){JSONObjectjsonObject=null;try{jsonObject=newJSONObject();jsonObject.put("id","1");jsonObject.put("name","李磊");jsonObject.put("age",30);}catch(Exceptione){e.printStackTrace();}returnnull!=jsonObject?jsonObject.toString():"";}

也可以这么写,估计好理解点
解决方案六:
一楼正确。如果没有异常,则执行returnjsonObject.toString(),第二个return不可达。如果在第一个return之前发生异常,最终将执行return"";
解决方案七:
《ThinkinginJava》一书中原话:return关键字的用法,它包括两方面:首先,它代表“已经做完,离开此方法”。其次,如果此方法产生了一个返回值,这个值要放在return语句后面。
解决方案八:
我明白了……
解决方案九:
那为什么第二个return不写在catch里
解决方案十:
引用8楼shmy110的回复:

那为什么第二个return不写在catch里

trycatch完整的是少个finally{}的,finally{}是最终无论如何都执行的.return写在try里是正常执行想要的返回结果catch里是发生异常时返回的结果.但是有时候并非上述两种情况就可以概括所有,所以写在catch外的return类似finally里的return,就是如果try里面没有正常执行,那么不管有没有发生异常都要执行最下面的return,这个return写在finally中你就能懂了.
解决方案十一:
引用9楼nich002的回复:

Quote: 引用8楼shmy110的回复:
那为什么第二个return不写在catch里

trycatch完整的是少个finally{}的,finally{}是最终无论如何都执行的.return写在try里是正常执行想要的返回结果catch里是发生异常时返回的结果.但是有时候并非上述两种情况就可以概括所有,所以写在catch外的return类似finally里的return,就是如果try里面没有正常执行,那么不管有没有发生异常都要执行最下面的return,这个return写在finally中你就能懂了.

已秒懂
解决方案十二:
你的基础有点差啊当其中一个return返回之后剩下的代码就不会执行了

时间: 2024-11-03 06:09:01

一个方法中两个return的相关文章

在java中一个方法抛两个异常会怎样

问题描述 在java中一个方法抛两个异常会怎样 在一个java方法中同时用throw和throws抛出异常.会有不良的影响么.会不会有一个一个异常抛不出去的情况发生啊?求大神帮帮忙 解决方案 他俩用的地方不一样,throws是写在方法后面,其他地方调用时,要捕获,throw是在方法内直接抛出,可以一起用throw触发了,估计就到不了throws的捕获了,看你具体怎样用的 解决方案二: 方法声明时可以抛出异常,但是并不代表调用这个方法时会发生异常. 测试要构造异常条件才能走入异常分支的啊.例如:

javaweb-求助啊,怎么实现一个frameset中两个jsp间的数据传输呢?

问题描述 求助啊,怎么实现一个frameset中两个jsp间的数据传输呢? 其中一个jsp提交form表单,另外一个jsp获取到提交过来的数据 解决方案 表单提交到另外一个jsp页面用request对象获取不就行了?和frameset有什么关系? 如果不想提交,另外一个frame获取某个frame里面输入的数据,使用parent.getElementById('frameID').contentWindow.documemt.getElementById获取frame中的控件 解决方案二: ??

选择-如何在一个方法内返回UTF-8格式的字符串,在另一个方法中调用输出?

问题描述 如何在一个方法内返回UTF-8格式的字符串,在另一个方法中调用输出? package com.secutiry.rsa;import java.util.Scanner;public class Prtest { public String Phintx(){ Scanner cc =new Scanner(System.in); //下马这行会报错,选择try catch 或者 throw declaration //选择try catch 则无法return 选择throw dec

JSF中如何写js代码提交到JSF的管理Bean的一个方法中

问题描述 请问在JSF中如何写js代码提交到JSF的管理Bean的一个方法中faces-config.xml代码片段 <managed-bean><managed-bean-name>loginAction</managed-bean-name><managed-bean-class>com.test.action.login.LoginAction</managed-bean-class><managed-bean-scope>re

android-Android中怎么把一个方法中的值传递到另一个方法中

问题描述 Android中怎么把一个方法中的值传递到另一个方法中 如下 public final Handler viewHandler = new Handler() {...........................};假设这里面有一个值要传递到 public void initViews() { .'''''''''''}:这里面 请大神指教 解决方案 为你想传入的那个方法添加传入数据类型的参数,然后在后一个方法中处理传入的数据,调用此方法的时候就可以传值了 public void

java-Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了!

问题描述 Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了! Java中在同一个类中把一个方法中的数组元素传到另一个方法中,怎么传啊?麻烦大家说一下,谢谢了! 麻烦大家了 解决方案 直接作为参数传就是了 void f1() { int[] x = {1,2,3,4,5}; f2(x[1]); } void f2(int n) { } 解决方案二: Spring AOP代理机制以及方法调用在同一个类的另一个方法的问题 解决方案三: 可以使用全局变量的方

junit 如何测试一个方法中的每行代码是否都被执行过?

问题描述 junit 如何测试一个方法中的每行代码是否都被执行过? 如题 测试一个方法中的每行代码是否都被执行过?是否有多余的代码? 解决方案 要知道一个代码块里面的代码是否被执行过,其实可以在该代码块最后加个输出语句即可,如果输出语句有执行,那么 前面的代码必然有执行. 但执行效果不一定是你的预期效果罢了(因为代码不一定是符合你的设计需求的) 解决方案二: 是否有多余的代码? 这个应该有代码校验工具. 解决方案三: 你这说的是白盒测试中的覆盖率测试,如果代码中有分支语句,需要编写多个测试用例才

jquery中一个方法中动态生成的标签可以被其它方法调用吗

问题描述 jquery中一个方法中动态生成的标签可以被其它方法调用吗 解决方案 在控制台中动态引入jquery的方法jquery几个按钮同时调用一个方法 解决方案二: 可以,就根据div的id或者class找到他,$("#xxxx") 解决方案三: 你应该取得添加的那个JS对象 var dd = $('#attr_info').append(......) 然后再$(dd).eq(..).keyup 解决方案四: 看你代码append是动态添加的item吧..这样你的ajax都没添加到

c# com控件-C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况

问题描述 C#調用OCX控件問題,如何在另外一个方法中执行A 并获取A事件的执行情况 最近开发时使用到一个第3方提供的ocx控件.其中ocx控件中有一个A方法,以及一个A方法的事件(通过事件中的参数来判断A方法的执行情况) 我的问题是:我写了一个B方法,在B方法中调用了A方法,并要在B方法中等待A事件的执行并判断其执行情况.但是我在B方法中等待A事件超时后才会执行A的事件,即只有退出B方法后A的事件才会执行.求各位大神帮帮忙.小弟入行不久,不知道如何处理.附上代码 后来我在B方法中通过线程去执行