【问题标题】:Why different exceptions for FileWriter and FileOutputStream?为什么 FileWriter 和 FileOutputStream 有不同的例外?
【发布时间】:2012-01-24 06:04:48
【问题描述】:

FileWriterFileOutputStream 的 Java 7 文档显示 FileWriter 的构造函数抛出 IOException,而 FileOutputStream 的构造函数抛出 FileNotFoundException。

这两个例外的原因是相同的。它说“如果文件存在但是是目录而不是常规文件,不存在但无法创建,或者由于任何其他原因无法打开”

如果是这种情况,那么为什么 Java 创建者决定 FileOutputStream 的特殊异常和 FileWriter 的一般异常??

【问题讨论】:

    标签: java ioexception filenotfoundexception


    【解决方案1】:
    1. FileWriter 扩展 OutputStreamWriter 其构造函数抛出 UnsupportedEncodingException
    2. 如果您查看FileWriter 的实现,它会使用FileOutputStream 抛出FileNotFoundException

    因为FileWriter 构造函数现在可以抛出这些异常中的任何一个,所以它被声明为抛出IOException,这是两个异常的公共超类。 (或者,它可以被声明为抛出两个单独的异常。)

    【讨论】:

    • FileReader 扩展了 InputStreamReader(构造函数可能抛出 UnsupportedCharsetException),但 FileReader 构造函数只抛出 FileNotFoundException(FileReader 构造函数调用 FileInputStream 构造函数,它只抛出 FileNotFoundException)。
    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2011-07-06
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多