Since ByteArrayOutputStream
simply writes to memory, an IOException
should never occur. However, because of the contract of the OutputStream
interface, all stream operations define IOException
in their throws
clause.
What is the correct way to "handle" this never-occurring IOException
? Simply wrap operations in an empty try-catch
block?
Or are there any actual situations where ByteArrayOutputStream
could throw an exception?
(See also: How can I handle an IOException which I know can never be thrown, in a safe and readable manner?)
EDIT
As Jon points out, ByteArrayOutputStream
doesn't declare a throws
clause on the write
methods it defines -- however, it inherits write(byte[])
from OutputStream
, and that one does throw IOEXception
(quite odd that BAOS
wouldn't override this method, as it could replace the superclass version -- which writes one byte at a time -- with a far more efficient arraycopy
call)
close()
must be a mistake - especially when the javadoc says it "has no effect" – Dingman