现在的位置: 首页 > 综合 > 正文

javabean:最终块未正常完成

2013年02月14日 ⁄ 综合 ⁄ 共 941字 ⁄ 字号 评论关闭

    /**
     *删除操作
     *输入参数: 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的语句就无法执行了

抱歉!评论已关闭.