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