public boolean findUser(UserInfoDTO user)
{
Connection conn=null;
PreparedStatement statement=null;
    ResultSet rs=null;
try
{
conn=DBUtil.getConnection();
statement=conn.prepareStatement("select * from UserInfo where userID=? and userPassword=?");
       statement.setString(1,user.getUserID());
        statement.setString(2,user.getUserPassword());
        rs=statement.executeQuery();
if(rs.next())
{
return true;
}
else{
return false;
}
}
catch(Exception ex)
{
System.out.println("数据库操作失败!");
}
finally
{
 try
  {
rs.close();
statement.close();
    conn.close();
}
catch(Exception ex1)
{
System.out.println("数据库关闭失败!");
}
}
return false;//???这是干啥的?,为啥注释掉还报错
}

解决方案 »

  1.   

    虽然if/else里面已经有了retuen,但该逻辑语句在程序执行的过程中不一定会执行到,例如抛出异常等问题的出现,所以必须在try-catch外加一个return确保无论发生什么情况都会retuen.
      

  2.   

    有返回值的方法 一定呀确保不管什么情况下都要能又返回值...
    try块里面的语句等于是局部的一样.外面没有办法访问到..
      

  3.   

    因为你的try catch模块没有返回信息 要不就抛出异常
      

  4.   

    这位兄台,你上面定义的函数返回值为boolean型,所以函数的结尾必须有return语句。至于你try语句中的返回语句就相当于break语句,满足条件即跳出循环,而非向指针一样返回远处继续执行。
    根据你的函数,我验证了一下,由于你上面的try语句里 面已经有返回值,最后一条return语句不执行。范例:public class First { public static  void main(String[] args)
    {
    int a=5;
    int b=1;
    if(new First().compare(a,b)){


    System.out.println("you are right!");
    }



    } public boolean compare(int a1 ,int b1)
    {
    try{
    if(a1>b1)
    {
    return true;
    }
    else{

    }


    }
    catch(Exception e){}
    finally{}



    return false;

    }


    }
      

  5.   

    由于你只在try模块中加了return;一旦程序出现了异常你的该函数就没有返回值了。这与你的函数要接收一个boolean类型的返回值相矛盾了
      

  6.   

    首先方法返回类型为BOOLEAN,return是必须得有的。虽然你在try快有if/ELSE,但是这只是TRY块里面的返回,它不一定会执行,如果把IF/ELSE放在方法体内,而不是只在某个块中,那么最后的RETURN是可以去掉的
      

  7.   

    因为你的方法是一定要进行return的,当然,你的return都是写在局部,Java是强类型语言,担心在局部里的return执行不到,所以在方法的尾部需要写return..
      

  8.   

    public boolean findUser
    该方法定义了返回类型是boolean,所以必须要返回一个boolean值。
      

  9.   

    方法有返回值 就可以根据方法的 返回一个类型 
    有时候在判断中出现某种情况的时候 return一下表示下面不执行了。在js中验证中 用的最多了
      

  10.   

    因为 返回值类型为Boolean  所以 必须返回一个false 或  true
      

  11.   

    1.finally块和最外层有且只能有一个return,否则出编译期错误。(catch块不影响此结论)----try块和最外层有且只能有一个return,否则出编译期错误。(try块有时,catch块也必须有return)----return可以不写在外层而写在finally里,但是会报警告(标黄)。(try块,catch块不影响此结论)
    2.finally有return时,不管有没有异常,都会从finally的return跑掉----try块有return。没有异常(不进入catch块)时,finally块有return走finally,否则走try的return。--------外层有也不走,其实是运行到try的return时,执行finally在返回try的return,但是finally也有return,所以相当于半路跑路了----try块有return。有异常(进入catch块)时,finally块有return走finally,否则走catch的return。--------解释同上,到finally时半路跑路了。测试代码----->传送门