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

B M*_*B M 3 java filenotfoundexception ioexception filewriter fileoutputstream

来自java文档

public FileWriter(String fileName)抛出IOException

抛出:

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

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

抛出:

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

这个选择有特定原因吗?

Kei*_*ith 7

有趣的问题.

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

FileWriter用一个FileOutputStream.在FileOutputStream抛出一个FileNotFoundException,其延伸IOException.

FileWriter extends OutputStreamWriter其构造函数抛出UnsupportedEncodingException,也延伸IOException.

FileWriter因此,可以抛出任何一个例外.但由于它们都扩展了IOException,它IOException在构造函数的签名中声明.