为什么ByteArrayOutputStream
。 close
与throws IOException
一起声明? 首先,事实上它不能扔任何东西,因为它的身体是空的。其次,它在法律上不能抛出任何东西,因为它的文档说“关闭一个ByteArrayOutputStream不起作用”。为什么ByteArrayOutputStream.close()抛出IOException?
这不是(非重要,但仍然)有点小错误吗?
是的,我知道它的超类OutputStream
执行Closable
,close
方法允许投掷IOException
。但是没有人禁止用close
方法覆盖它(在ByteArrayOutputStream
中),并且没有throw规范。 (即使覆盖更抛出法用投掷少法在一些古老的版本的Java禁止,改变ByteArrayOutputStream
。close
定义现在不会是不兼容的变化。)
如果定义改变它赶上IOException异常将得到编译错误,现有代码'无法到达catch块为IOException。这个异常永远不会从try语句体中抛出。 – saka1029
@ saka1029:我想,你走在正确的轨道上。 – Holger
@ saka1029,你是对的(我认为这会导致警告,而不是错误)。 – Sasha