黑马程序员技术交流社区
标题:
关于方法的返回值问题。
[打印本页]
作者:
zhouxp3323
时间:
2012-4-8 14:54
标题:
关于方法的返回值问题。
本帖最后由 zhouxp3323 于 2012-4-8 14:56 编辑
public class SetPerson {
public Object getValue(int i){
Object object = null;
Date date = null;
try {
if(i>0){
return date;
}
return object;
} catch (Exception e) {
e.printStackTrace();
}
}
}
---------------------------------------
public class SetPerson {
public Object getValue(int i){
Object object = null;
Date date = null;
try {
if(i>0){
return date;
}
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}
上面那种情况会报错,下面这种不会,把那个return object放到try里面为什么就不行呢?
作者:
邓海涛
时间:
2012-4-8 15:03
因为你把return语句放入了try语句里面,编译器找不到返回语句,所以报错。
我觉得出现编译器发现不了return语句的原因是,在编译阶段,不会进入try语句去检查,所以导致编译器找不到return语句。
作者:
江远云
时间:
2012-4-8 15:04
try{}catch(){}是一条语句,你把一条语句给分开了,当然会报错
public class SetPerson {
public Object getValue(int i){
Object object = null;
Date date = null;
try {
if(i>0){
return date;
}
} catch (Exception e) {
e.printStackTrace();
}
return object;
}
}
try检测到错误跳转catch捕获
作者:
文密
时间:
2012-4-8 15:17
在try...cathch....中return值会出现编译错误,这是因为,当try语句捕获错误时候,有可能会丢失return语句,从而导致错误,
最简单的办法就是将需要return的值赋到一个变量,
而将变量从try语句中解放出来,放在最后,这样就能骗过编译器。
public int get() {
int val= -1; //中间变量
try {
val = abq.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
return val; //跳出try语句
}
作者:
翟友伟
时间:
2012-4-8 15:19
return object;是属于 public Object getValue(int i){}函数内的一部分
放入try语句中的话 就脱离了 方法
而你定义的方法又不是void的
必须返回一个 Object 类型的对象
作者:
郑强强
时间:
2012-4-8 15:47
当try语句中出现异常是时.会执行catch中的语句。java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象.e是此对象引用名称.然后e(引用)会自动调用Exception类中指定的方法。也就出现了e.printStackTrace() ,.printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。你上面的那一条程序在获得的结果中,捕获异常,所以结果会打印出异常。而你的第二条程序,你的object返回对象不再e.printStackTrace()范围内,所以不出现打印错误。return object是属于 public Object getValue(int i){}函数内的一部分 ,这个必须有返回值,你放到try里面肯定是缺少返回值了,所以肯定会出错,是不行的
作者:
pray
时间:
2014-4-26 05:45
让人根据它写成小说又被不同导演拍成48个不同版本的电影的好帖
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2