嗯,我不认为这是我正在寻找的方法。他们目前不抛出任何异常。但是我知道代码在这些情况下会失败,所以我想知道如何向它们添加异常,以便我可以适当地处理这些情况。
它不会抛出异常。在listFiles()
文档中,它说:
如果此抽象路径名不表示目录,或者发生 I/O 错误,则返回 null。
所以如果它是一个文件,或者一个不存在的文件,它会返回一个空值。
但这就是 RuntimeException 发挥作用的地方。如果在您编写的方法中说:
public void doStuffToAnExistingDirectory(String dirname)
{
// stuff
}
并且该方法的编写方式是它需要一个现有目录的目录名称,并且在该方法的某个地方执行以下操作:
File file = new File(dirname);
File[] listFiles = file.listFiles();
int num = listFiles.length;
这将抛出一个NullPointerException
ifdirname
不表示现有目录。此异常是Runtime,因此您不必捕获它或在您的doStuffToAnExistingDirectory()
方法中声明它,您可以让它传播直到最终捕获它。这本质上是说该方法不是为了处理目录不存在的异常而编写的。因此,在该程序运行期间,如果dirname
以某种方式最终成为一个不存在的目录,则会引发运行时异常。
您可以选择在您的代码中处理这种情况(而不是在运行时,当程序运行时),并检查是否listFiles
为空,然后可能抛出您自己的异常以让任何调用该doStuffToAnExistingDirectory()
方法知道它只是给了你一个不存在的目录。