java - 在 Java 中,为什么 FileWriter 抛出 IOException 而 FileOutputStream 抛出 FileNotFoundException 的原因完全相同

标签 java filenotfoundexception ioexception filewriter fileoutputstream

来自 java docs

公共(public) FileWriter(String fileName) 抛出 IOException

抛出:

IOException - 如果指定的文件存在但它是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开

here

public FileOutputStream(File file, boolean append) 抛出 FileNotFoundException

抛出:

FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开

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

最佳答案

有趣的问题。

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

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

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

因此,

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

关于java - 在 Java 中,为什么 FileWriter 抛出 IOException 而 FileOutputStream 抛出 FileNotFoundException 的原因完全相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31991422/

相关文章:

java - 由 : java. io.FileNotFoundException : Could not open ServletContext resource [/applicationContext. xml 引起]

java - 向 treeMap 的函数添加值而不丢失旧数据

directory - 即使文件出现在源文件夹中,CFdirectory 标记也不显示目录中的文件

android - 如何使用videoview在android中播放流?无法在客户端打开文件,尝试在服务器端

android - Parcelable 写入可序列化对象时遇到 IOException

java - IOException,使用 SealedObject.getObject() 时无效的流 header

java - 销毁 Fixture 时出现 LibGDX Java fatal error

java - 索引属性文件

java - SelectionTracker.Builder 不工作 IllegalArgumentException

java - Spring + hibernate : manually commit the transaction at end