请看一段代码:
public Customer getCustomer(String id) throws BrokerException {
   Customer customer;
   Connection conn = getConnection();
   try {
     Statement smt = conn.createStatement();
     String mySql = "SELECT FROM customer WHERE ssn = "+"'"+id+"'";
     ResultSet rs = smt.executeQuery(mySql);
    customer = new Customer(rs.getString("id"), rs.getString("name"),
                                      rs.getString("addr"));
     return customer;
   }
   catch (SQLException e) {
     e.printStackTrace();
   } }
编译器总是报错,说是没有返回值,可是我写return语句了啊,迷惑。还有,编译器还经常说我的有些类没有定义,但是我明明定义了啊,在同一个包下啊。这个错有时候出现,过一会就没了,不知道怎么回事。请高手赐教。

解决方案 »

  1.   

    你写在try里面了
    但是try里的teturn不一定会执行到(如果有错误的话就会跳到catch里了,所以会报错)
      

  2.   

    觉得应该没错的
    你在catch块中加入:
    return null;试试
      

  3.   

    return 写在try 和catch的外面
      

  4.   

    你写在try里面了
    但是try里的teturn不一定会执行到(如果有错误的话就会跳到catch里了,所以会报错)
    正解
      

  5.   

    catch (SQLException e) {
         e.printStackTrace();
         return null;
       }
      

  6.   

    同意楼上的
    try块中正常走的话没有问题 
    但是如果是出现异常的话跳到catch块中就没有返回值了 当然出错了
    在catch中加个返回值语句
      

  7.   

    来晚了, 呵呵,不过还是把楼主的代码改一下public Customer getCustomer(String id) throws BrokerException {
       Customer customer= null ;
       Connection conn = getConnection();
       try {
         Statement smt = conn.createStatement();
         String mySql = "SELECT FROM customer WHERE ssn = "+"'"+id+"'";
         ResultSet rs = smt.executeQuery(mySql);
        customer = new Customer(rs.getString("id"), rs.getString("name"),
                                          rs.getString("addr"));
         
       }
       catch (SQLException e) {
         e.printStackTrace();
       }
       return customer;
     }
      

  8.   

    应该改成如下:
    public Customer getCustomer(String id) throws BrokerException {
       Customer customer= null ;
       Connection conn = getConnection();
       try {
         Statement smt = conn.createStatement();
         String mySql = "SELECT FROM customer WHERE ssn = "+"'"+id+"'";
         ResultSet rs = smt.executeQuery(mySql);
         while(rs.next())
        customer = new Customer(rs.getString("id"), rs.getString("name"),
                                          rs.getString("addr"));
         
       }
       catch (SQLException e) {
         e.printStackTrace();
       }
       return customer;
     }