为什么在Java中,FileWriter和FileOutputStream由于相同的原因而抛出不同的异常(IOException和FileNotFoundException)?

3

来自 Java 文档

public FileWriter(String fileName) throws IOException

抛出异常:

IOException - 如果指定的文件已存在但是是一个目录而不是普通文件、不存在但无法创建,或由于其他原因无法打开

以及此处

public FileOutputStream(File file, boolean append) throws FileNotFoundException

抛出异常:

FileNotFoundException - 如果指定的文件已存在但是是一个目录而不是普通文件、不存在但无法创建,或由于其他原因无法打开。

这个选择有特别的原因吗?


FileOutputStream 只有在找不到文件时才会失败。而 FileWriter 则可能因为找不到文件或其他原因而失败。 - user3458
1个回答

7

有趣的问题。

我刚刚查看了每个构造函数的代码,这有助于澄清事情:

FileWriter使用FileOutputStreamFileOutputStream抛出FileNotFoundException,它扩展了IOException

FileWriter extends OutputStreamWriter,其构造函数抛出UnsupportedEncodingException,也扩展了IOException

因此,FileWriter可以抛出任一异常。但由于它们都扩展了IOException,所以在其构造函数的签名中声明了IOException


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接