Поскольку ByteArrayOutputStream
просто записывает в память, исключение IOException
никогда не должно возникать. Однако из-за контракта интерфейса OutputStream
все потоковые операции определяют IOException
в своем предложении throws
.
Как правильно «обрабатывать» "это никогда не возникающее IOException
? Просто обернуть операции в пустой блок try-catch
?
Или существуют реальные ситуации, когда ByteArrayOutputStream
может вызвать исключение?
(См. Также: Как я могу обработать IOException, которое, как я знаю, никогда не может быть сгенерировано, безопасным и читаемым способом? )
EDIT
Как указывает Джон, ByteArrayOutputStream
не объявляет предложение throws
в методах write
, которые он определяет, но наследует write (byte [])
из OutputStream
, и этот бросает IOEXception
(довольно странно, что BAOS
не переопределит этот метод, поскольку он может заменить версию суперкласса, которая пишет по одному байту - с гораздо более эффективным вызовом arraycopy
)