断言Vs if(var!= null)哪条路更好还是正确?

时间:2015-02-16 15:07:39

标签: java android

在我的应用程序中,我想在finally语句中关闭我的光标,如下所示:

Cursor cursor = null;
try {
    // some code
} finally {
     cursor.close();
}

我的IDE突出显示cursor.close();并告诉:

  

此方法可以生成nullPointerException

并建议纠正它(我使用intelij idea):
第一:

assert cursor != null;
cursor.close();

第二

if (cursor != null) {
   cursor.close();
} 

我想知道它们之间有什么区别,哪种方式更好?

1 个答案:

答案 0 :(得分:5)

仅当-ea(启用断言)作为参数传递给JVM时,才会执行Java断言。如果启用了断言并且断言的布尔表达式的计算结果为false,则将抛出AssertionError。所以断言实际上只是用作调试功能。

您应该定义使用if语法。

请注意,如果booleanFlag为assert booleanFlag : message;,还会有message语法将AssertionException作为消息传递给false < / p>