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中返回对象有什么需要注意的么?

解决方案 »

  1.   

    try代码块中定义的变量作用域仅仅为try代码块。return item放在try-catch外面
      

  2.   

    protected Object get()//你方法返回的类型就是Object类型。
      

  3.   

    嗯 楼上的说了 
    protected Object get()//你方法返回的类型就是Object类型。 
    所以就要保证方法能返回一个Object类型的对象
    但是你的代码只在try中有 return item;
    如果代码出现异常进入catch块里不就不能正确返回Object类型的对象了么。
    就相当于是走了分支,每一台分支都要有 return Object;
    if-else能好理解一些,如果不在函数内定义全局的返回,就在要每个局部分支定义返回。
      

  4.   


    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;
    }
      

  5.   

    再度声明所有变量在定义的时候不要放在try里面 很容易空指针错误
      

  6.   

    楼上的哥们讲的很清楚了,你定义的函数必须要有返回值的,如果在try中出异常了就没返回值了,编译肯定会报错的。解决方法可以在finally外面return 一个object就行了。