javabean:最终块未正常完成

本文探讨了在Java中finally块内使用return语句的正确性和潜在问题,并提供了最佳实践建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值