由于
正确的处理从未发生的
或者有任何实际情况下
(另请参见:如何以安全和可读的方式处理我知道永远不会抛出的IOException?)
编辑
正如Jon指出的那样,
ByteArrayOutputStream
仅写入内存,因此不应发生IOException
。但是,由于OutputStream
接口的合同,所有流操作都在其throws
子句中定义IOException
。正确的处理从未发生的
IOException
的方法是什么?只需将操作包装在空的try-catch
块中吗?或者有任何实际情况下
ByteArrayOutputStream
可能会引发异常吗?(另请参见:如何以安全和可读的方式处理我知道永远不会抛出的IOException?)
编辑
正如Jon指出的那样,
ByteArrayOutputStream
没有在其定义的write
方法上声明throws
子句--但是,它继承了OutputStream
的write(byte[])
,并且其中确实会抛出IOEXception
(非常奇怪,BAOS
不会覆盖此方法,因为它可以用更高效的arraycopy
调用替换超类版本- -它每次写入一个字节)
close()
上的IOException
必定是一个错误 - 特别是当 javadoc 表明它“没有任何影响”时。 - irreputableByteArrayOutputStream.write
实际上没有声明IOException
,但是每当我使用它时,Eclipse 都会抱怨未处理的异常……很奇怪。 - Tony the PonyByteArrayOutputStream
的子类中调用write(byte[])
。BAOS
没有覆盖此方法,因此我实际上是在调用OutputStream
中定义的方法(它会抛出一个IOE
)。 - Tony the Ponywrite(data, 0, data.length)
。 - Jon Skeet