当前位置: 首页 > 知识库问答 >
问题:

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

祁刚毅
2023-03-14

来自java文档

公共FileWriter(字符串文件名)引发IOException

抛出:

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

还有这里

公共FileOutputStream(File File,boolean append)引发FileNotFoundException

抛出:

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

这种选择有具体的原因吗?

共有1个答案

孟英叡
2023-03-14

有趣的问题。

我只是浏览了每个构造函数的代码,这有助于澄清问题:

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

FileWriter扩展了OutputStreamWriter,其构造函数引发了UnsupportedEncodingException,它还扩展了IOException。

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

 类似资料:
  • 问题内容: 将字符串解析为字节时出现异常 问题答案: 这是因为默认的parse方法要求使用十进制格式的数字来解析十六进制数字,请使用以下parse: 其中16是解析的基础。 至于您的评论,您是对的。字节的最大值为0x7F。因此,您可以将其解析为并执行二进制与操作以获得LSB,即您的字节:

  • 问题内容: 我睡眠不足吗?以下代码 抛出此错误: 这绝对是行不通的!有人可以解释一下吗? 问题答案: 在规格中它说: 每当调用其origin-clean标志设置为false的canvas元素的toDataURL()方法时,该方法都必须引发SECURITY_ERR异常。 如果图像来自其他服务器,我认为您不能使用toDataURL()

  • 问题内容: 运行此命令时: 响应为: 这对我来说真是太棒了。我本以为这会带来编译时错误。 为什么我可以在Java中抛出null,为什么将其转换为NullPointerException? (实际上,鉴于我抛出的是null,因此我不知道这是否是“ upcast”) 除了一个非常愚蠢的面试问题(请没人在面试中问这个问题)之外,我看不到任何理由。也许您想被解雇,但这就是…我的意思是,为什么还会有人呢?

  • 问题内容: final Multimap terms = getTerms(bq); for (Term t : terms.keySet()) { Collection C = new HashSet(terms.get(t)); if (!C.isEmpty()) { for (Iterator it = C.iterator(); it.hasNext();) { BooleanClause

  • 问题内容: 我试图将两个’Employee’对象添加到TreeSet中: 但是它抛出一个ClassCastException: 但是,如果我仅将一个对象添加到TreeSet中: 或者,如果我改用HashSet: 那就成功了。为什么会发生异常,我该如何解决? 问题答案: 要么必须实现,或者你需要提供一个比较创建时。 在文档中对此进行了详细说明: 插入排序集中的所有元素都必须实现接口(或被指定的比较器