我不知道为什么 eclipse 在我的这段代码中警告我“死代码”:
PreparedStatement p = conn.prepareStatement("SELECT name FROM user WHERE age = ? , city = ?");
p.setInt(1, (String) parameters.get("age"));
p.setString(2, (String) parameters.get("city"));
if (p == null) {
log.warn("User is not available");
return results;
}
警告在日志中,谁能告诉我这是什么原因?谢谢。
最佳答案
p
此时不能为 null
,因为您已经在 上调用了
并且如果它在那里是 setInt
和 setString
code>pnull
,那么它会抛出一个 NullPointerException
,因此永远不会到达您的 if
。
另请注意,根据 its documentation , preparedStatement
永远不会返回 null
。它只能返回有效的语句或抛出异常。在后一种情况下,您的 if
将也无法到达。然而,编译器未检查这一事实(因为 prepareStatement
的损坏实现 可能理论上返回 空
)。
关于java - IF 语句中的死代码警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11305432/