更改此条件,以便它不总是评估为" false"

时间:2017-11-23 06:17:25

标签: java sonarqube

我正在接受"更改此条件,以便它不会总是评估为false"以下代码的声纳问题

UserTransaction tx = null;
try {
    tx = (UserTransaction) new InitialContext()
        .lookup("java:comp/UserTransaction");
    tx.begin();

    // ...

} catch (NamingException | NotSupportedException | SystemException | CommandException e) {
    Logger.logError(getClass(), e);
    try {
        if(null != tx) {
            tx.rollback(); // gives  Change this condition so that it does not always evaluate to "false"
        }
    } catch (NullPointerException | IllegalStateException | SecurityException | SystemException rollbackt) {
        logError("Rollback exception", rollbackt);
    }

    throw new UserDefinedException("failed save incomplete order due to a command exception", e);
}

我们可以处理这个好主意吗?

1 个答案:

答案 0 :(得分:-4)

这是对sonar lint报道的问题的解释。部分:

  

if(null!= tx){               tx.rollback(); //给出更改此条件,以便它不总是评估为" false" }

这里,如果你看到你写条件的方式" null!= tx" ,因为我们知道" null" &安培;如果我们将比较" null"等同于任何不可能的东西。

如果条件写成:

  

if(tx!= null){               tx.rollback();   }

声纳棉绒问题将被修复,因为现在不是检查null的值,而是#34; tx"将被评估&如果它现在等于null,那么" tx.rollback()"将执行。

我希望这能澄清一切:)