IntelliJ"可能导致NullPointerException"使用File.listFiles()时发出警告

时间:2016-05-11 01:52:50

标签: java intellij-idea

这是仍然生成警告的最小例子:

id_nomina_gral

(path是传递给此方法的字符串)

带有cm_nomina_gral循环的第二行会触发IDE警告:

id

鉴于我刚刚初始化了变量,并且我的程序正常工作,我的第一直觉是这是一个垃圾警告。

这是一个有效的警告,如果是,我该如何清除它?

* EDIT1

文件,根据其Javadoc,如果给它一个空路径,将抛出一个NPE。因此,清除错误似乎是注释cm_valuacion参数的情况,以便它已知永远不会为空。

2 个答案:

答案 0 :(得分:8)

警告的原因是listFiles()在某些条件下将返回null。根据文档,如果null未引用目录,或者访问时发生I / O错误,它将返回path。为了防止这种可能性,并消除警告,你可以这样做:

File searchpath = new File(path);
File[] files = searchpath.listFiles();
if(files == null){
    // handle path not a directory, or other error
} else {
    for(File file: files){ ... }
}

请参阅https://docs.oracle.com/javase/7/docs/api/java/io/File.html#listFiles()

答案 1 :(得分:1)

每当IntelliJ向我抛出这样的东西时,我通常会发现它符合我的最佳利益,但它只是在一个try-catch块中。

当然,如果你绝对肯定它永远不会失败,那么可能没有意义,但我认为总是考虑所有可能的错误是好的做法,因为这是我们作为程序员的工作。