返回类型是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");
}
}
答案 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;
}