当前位置:编程学习 > JAVA >>

在异常中返回对象出错

protected Object get(Class clz,Serializable id){

try{
 Object item=getSession().get(clz, id);
 return item;
}catch(RuntimeException e){
e.printStackTrace();
}finally{
closeSession();
}
}

这段代码为什么提示 必须返回一个Object类型对象。  在try中返回对象有什么需要注意的么? --------------------编程问答-------------------- try代码块中定义的变量作用域仅仅为try代码块。return item放在try-catch外面 --------------------编程问答-------------------- protected Object get()//你方法返回的类型就是Object类型。 --------------------编程问答-------------------- 楼上两人加起来就哦了。。 --------------------编程问答-------------------- 嗯 楼上的说了 
protected Object get()//你方法返回的类型就是Object类型。 
所以就要保证方法能返回一个Object类型的对象
但是你的代码只在try中有 return item;
如果代码出现异常进入catch块里不就不能正确返回Object类型的对象了么。
就相当于是走了分支,每一台分支都要有 return Object;
if-else能好理解一些,如果不在函数内定义全局的返回,就在要每个局部分支定义返回。 --------------------编程问答--------------------
引用 4 楼 a597926661 的回复:
嗯 楼上的说了 
protected Object get()//你方法返回的类型就是Object类型。 
所以就要保证方法能返回一个Object类型的对象
但是你的代码只在try中有 return item;
如果代码出现异常进入catch块里不就不能正确返回Object类型的对象了么。
就相当于是走了分支,每一台分支都要有 return Object;
i……
嗯 很详细 --------------------编程问答--------------------
try中的东西是不一定能执行完成的
假如你Object item=getSession().get(clz, id);这句话异常,你的函数是没有返回值的
跟你函数定义Object 返回值类型是不符合的
最好的办法是在try外面定义一个对象,在try中赋值,在try外返回
protected Object get(Class clz,Serializable id){
 Object item=new Object();
 try{
    item =getSession().get(clz, id);
 } catch (RuntimeException e){
    e.printStackTrace();
 } finally {
    closeSession();
 }
 return item;
} --------------------编程问答-------------------- 再度声明所有变量在定义的时候不要放在try里面 很容易空指针错误 --------------------编程问答-------------------- 楼上的哥们讲的很清楚了,你定义的函数必须要有返回值的,如果在try中出异常了就没返回值了,编译肯定会报错的。解决方法可以在finally外面return 一个object就行了。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,