/**
*删除操作
*输入参数: delete SQL
*输出参数: count = -2 >Exception count = 0 >nothing
* count > 1 >right
*/
public int delete(String sql) {
int count = 0;
stmt = con.getStmt();
try {
count = stmt.executeUpdate(sql);
} catch (Exception e) {
count = -2;
System.err.println(e.getMessage());
e.printStackTrace();
} finally {
con.close();
return count; //最终块未正常完成
}
}
解释和解决方法:报warning原因是,不应该在finally中return
你可以测试一下,无论出错与否,最后getints返回的永远是0
加入碰到类似代码,比较常用的做法是类似
try{
return 123;
}catch(Exception e){
e.printStackTrace();
}finally{
}
return 0;
}
如果在return 123之前出错,则进入catch和finally,并最终跳出try-catch-finally,返回0
如果try内没有错,则进入finally并返回123
这是eclipse3后的一个特点,就是认为在finally块中不应该存在return语句。
只是一个警告。
你可以在Window->Preferences->Java->Compiler->Errors/Warnings->
Potential programming problems中找到'finally' does not complete normally然后把它的警告级别改为Ignore就可以了。
那么在 finally 中存在 return 是否正确的呢?
正确但是不推荐,因为try{ }里面正常return的语句就无法执行了