我在这段代码中返回一个字符串数组,但它仍然说这个方法必须返回String类型的结果。为什么?

时间:2014-07-21 10:56:58

标签: java

返回类型是String数组。我返回了那个数组,但仍显示错误信息。

public static String[] get_dept_list()
    {
        establishConnection();
        try
        {
            stmt = conn.createStatement();
            sql = "select * from DEPARTMENT_LIST";
            ResultSet rs = stmt.executeQuery(sql);
            System.out.println("Query Ran");
            int in=-1; 
            String name [] = {};
            while(rs.next())
            {
                in++;
            }
            rs = stmt.executeQuery(sql);
            name = new String [in+1];
            in=-1;
            while(rs.next())
            {
                name[++in] = rs.getString("DEPT_NAME");
            }
            return name;
        }
        catch (SQLException e)
        {
            System.out.println("Problem in finding the dept_name_list");
        }
    }

7 个答案:

答案 0 :(得分:1)

捕获异常时,您必须确保也返回一个数组。

catch (SQLException e)
    {
        System.out.println("Problem in finding the dept_name_list");
        return new String[] { };
    }

答案 1 :(得分:0)

您收到一条错误消息,因为您的return广告块中只有try - catch。尝试将其中一个放在捕获中或try - catch之外。

答案 2 :(得分:0)

错误消息告诉您方法必须返回String[]

如果抛出异常并输入catch语句,则不会返回。

重构代码以返回默认值String[]或允许异常传播。

答案 3 :(得分:0)

您必须在功能结束时添加return null或返回new String[] { };

答案 4 :(得分:0)

如果代码抛出SQLExecption怎么办?控件将到达catch块,然后在catch块之后,没有返回语句。

将您的代码更改为以下内容:

public static String[] get_dept_list()

    String [] name = null;

    try {
        ...
        name = new String [in+1];
        ...
    } catch (SQLException e) {
        ...
    }

    return name;
}

因此,无论代码是否会抛出异常,该方法的最后一行将始终执行,因此您确保您的方法始终返回一个String数组。

答案 5 :(得分:0)

如果您收到SQLException,您的代码将无法返回任何内容。你可能得到了一个。

验证控制台是否有任何输出,并在catch中或之后放置一个return语句。

答案 6 :(得分:0)

将您的name变量声明移到try - catch block

之上

并在发生异常时将其重新分配给null,因为更容易检查null条件

public static String[] get_dept_list()
    {
        String name [] = null;
        establishConnection();
        try
        {
            stmt = conn.createStatement();
            sql = "select * from DEPARTMENT_LIST";
            ResultSet rs = stmt.executeQuery(sql);
            System.out.println("Query Ran");
            int in=-1; 

            while(rs.next())
            {
                in++;
            }
            rs = stmt.executeQuery(sql);
            name = new String [in+1];
            in=-1;
            while(rs.next())
            {
                name[++in] = rs.getString("DEPT_NAME");
            }

        }
        catch (SQLException e)
        {
            System.out.println("Problem in finding the dept_name_list");
            name = null;
        }finally{
          //close resource intensive connection
          if(stmt != null){
             stmt.close();
          }
          if(conn!= null){
             conn.close();
          }
       }
        return name;
    }