在 java 为什么 FileWriter 抛出 IOException 而 FileOutputStream 抛出 FileNotFoundException 的原因完全相同
In java why does FileWriter throw IOException while FileOutputStream throw FileNotFoundException for the exact same reasons
public FileWriter(String fileName) 抛出 IOException
投掷:
IOException - 如果指定的文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
和here
public FileOutputStream(文件文件,布尔追加)抛出 FileNotFoundException
投掷:
FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
这个选择有什么具体原因吗?
有趣的问题。
我只是偷看了每个构造函数的代码,这有助于澄清事情:
FileWriter
使用 FileOutputStream
。 FileOutputStream
抛出一个 FileNotFoundException
,它扩展了 IOException
.
FileWriter extends OutputStreamWriter
其构造函数抛出 UnsupportedEncodingException
,它也扩展了 IOException
。
FileWriter
,因此,可以抛出任何一个异常。但由于它们都扩展了 IOException
,它在其构造函数的签名中声明了 IOException
。
public FileWriter(String fileName) 抛出 IOException
投掷:
IOException - 如果指定的文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
和here
public FileOutputStream(文件文件,布尔追加)抛出 FileNotFoundException
投掷:
FileNotFoundException - 如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开
这个选择有什么具体原因吗?
有趣的问题。
我只是偷看了每个构造函数的代码,这有助于澄清事情:
FileWriter
使用 FileOutputStream
。 FileOutputStream
抛出一个 FileNotFoundException
,它扩展了 IOException
.
FileWriter extends OutputStreamWriter
其构造函数抛出 UnsupportedEncodingException
,它也扩展了 IOException
。
FileWriter
,因此,可以抛出任何一个异常。但由于它们都扩展了 IOException
,它在其构造函数的签名中声明了 IOException
。