Java中的File类包含使用 boolean 值指示执行操作是否成功的方法。每次调用返回值时,所述方法的用户都需要检查返回值。

以下是从 mkdir() 摘录的文档片段,其中阐明了要求:



createNewFile() 也存在一种情况(甚至很奇怪),它同时使用 boolean 值和引发异常的异常来表示成功:



现在,这似乎充其量是不便的,因为用户将不得不预期两种错误情况,而不仅仅是使用简单的try-catch块。

大惊小怪的背后是什么原因?

最佳答案

因为那是二十多年前他们设计的方式。如果您可以让开发人员脱离退休之家,离开他们的Zimmer框架,您可能会得到更好的答案。否则,我们都只是猜测。

但是,您不需要像这里的某些人所想的那样经常调用这些方法。例如,isFile()/exists()/delete()/createNewFile()new FileInputStream(...)new FileOutputStream(...)之前都是多余的,它们将完全抛出您要查找的异常。在这些构造函数或相应的File.exists()/delete()/createNewFile()构造函数之前调用FileReader/Writer会比无用的情况更糟糕,这是时间和空间的浪费,这需要重复执行构造函数(或构造函数调用的操作系统代码)。我怀疑我已经使用File.createNewFile() 20年了。

09-05 01:31
查看更多