当前位置: 首页 > 知识库问答 >
问题:

Sonar:可能由于调用方法的返回值而取消空指针引用

邓欣德
2023-03-14

我从Sonar那里得到问题:“由于调用方法的返回值,样式-可能的空指针取消引用。findbugs:np_null_on_some_path_from_return_value。问题在lockuntil.after(new Date())上;

try {
            String sql = "select lock_until from shedlock where NAME=?";
            Timestamp lockUntil = jdbcTemplate.queryForObject(sql, new Object[] {taskname}, Timestamp.class);
            
            return lockUntil.after(new Date()); //issue line
            
        } catch (EmptyResultDataAccessException e){
            LOGGER.info("Checking shedlock for locked task[" + taskname + "]. No task exists. Exception: " + e.getLocalizedMessage());
            return false;
        }

我试图用

Date date = new Date();
return lockUntil.after(date);
Date date = new Date();
if(date != null)
    return lockUntil.after(date);
else
    return false;  -> this line is dead end

但它引入了其他问题。

谁能指导一下吗?

共有1个答案

尹英华
2023-03-14

假设new Date()永远不会返回null应该是一个有效的假设。我的猜测是,声纳抱怨的null值可能是locktear。我假设,如果查询与任何行都不匹配,QueryForObject将返回null,因此,如果您没有首先检查是否为null,就会收到关于使用locktear>的投诉。

 类似资料: