由于ByteArrayOutputStream
只是写入内存,所以不应出现IOException
。但是,由于OutputStream
接口的合同,所有流操作在其throws
子句中定义了IOException
。Java:写入ByteArrayOutputStream时发生IOException?
什么是“处理”这种从未发生的正确方法IOException
?只需将操作包装在空的try-catch
区块中?
或者是否存在ByteArrayOutputStream
可能会引发异常的实际情况?
(参见:How can I handle an IOException which I know can never be thrown, in a safe and readable manner?)
编辑
正如乔恩指出,ByteArrayOutputStream
不会对write
方法,它定义声明throws
条款 - 然而,它继承write(byte[])
从OutputStream
,而且一个抛出IOEXception
(奇怪的是BAOS
不会重写此方法,因为它可以取代超类版本 - 一次写入一个字节 - 使用效率更高的arraycopy
)
IOException异常的'接近()'必须是一个错误 - 尤其是当javadoc中说,它“没有效果“ – irreputable 2011-06-07 21:50:20
+1谢谢!我只注意到'ByteArrayOutputStream.write'实际上并不声明'IOException' - 但是Eclipse在我使用它时会抱怨一个未处理的异常......奇怪。 – 2011-06-07 21:52:59
@Jen:你确定你调用一个变量的方法*声明为'ByteArrayOutputStream'吗? – 2011-06-08 05:29:54