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

时间:2015-08-13 14:42:03

标签: java filenotfoundexception ioexception filewriter fileoutputstream

来自java docs

public FileWriter(String fileName)抛出IOException

抛出:

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

here

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

抛出:

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

这种选择有特定原因吗?

1 个答案:

答案 0 :(得分:7)

有趣的问题。

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

FileWriter使用FileOutputStreamFileOutputStream会引发FileNotFoundException,其范围为IOException

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

因此,

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