У меня есть этот блок кода
private void doSomething(Properties properties) throws XXException
{
PersistenceManager pm = null;
try {
pm = new PersistenceManager(distributedDatabase, "PeriodHelper: insertPeriod");
try {
pm.create(Tables.MY_TABLE);
} catch (ObjectAlreadyExistsException e) {
logger.warn("Could not create table! - "+e.getMessage(), e);
return;
}
pm.commit();
return;
}
catch (Exception e) {
throw new XXException(e.getMessage(), e);
}
finally {
if (pm != null)
pm.close();
}
}
, о котором сообщает findbugs / sonar, затронуто
Correctness - close() invoked on a value that is always null
close() is being invoked on a value that is always null. If this statement
is executed, a null pointer exception will occur. But the big risk here you
never close something that should be closed.
Key: NP_CLOSING_NULL
но если вы посмотрите на код, объект pm при вызове метода close () всегда будет не нулевым. Кто-нибудь может объяснить, почему findbugs ошибается?