Bubble IOException от PipedOutputStream до PipedInputStream

Я записываю некоторые данные в PipedOutputStream, который я подключил к PipedInputStream, который я передаю в какой-то сторонний API. Запись в PipedOutputStream выполняется асинхронно в другом потоке.

Когда поток IOException вызывается PipedOutputStream, как это влияет на соответствующий поток PipedInputStream? Это также вызывает исключение? Я бы подумал, что это желаемое поведение, потому что содержимое, которое должен предоставить InputStream, не является полным.

Если это не так, как я могу имитировать этот эффект?

Примечание. PipedOutputStream заключен в инструкцию try-with-resources, которая автоматически закрывает OutputStream.


person neXus    schedule 06.11.2015    source источник


Ответы (1)


Вы можете получить IOException для PipedOutputStream только в том случае, если вы закроете подключенный PipedInputStream. Это означает, что в это время вы больше не можете читать с ввода. Невозможно доставить искусственное исключение IOException.

person Zbynek Vyskovsky - kvr000    schedule 06.11.2015
comment
В документации нет ясности по этому поводу. В нем говорится, что write выдает IOException - если канал сломан, не подключен, закрыт, или если возникает ошибка ввода-вывода. Эта последняя часть заставляет меня думать, что я должен защищать сам. - person neXus; 16.11.2015