Вызов PrintWriter.checkError()
сообщит вам, если произошла какая-либо ошибка. Он не будет точно сообщать вам, какая ошибка произошла, но если checkError возвращает true, вы можете сделать вывод, что наиболее вероятной причиной является закрытый или сломанный сокет.
Если вы сохраняете ссылку на сокет, из которого получен входной поток, вы можете проверить состояние сокета.
Наконец, если вы действительно хотите точно знать, когда и почему поток "провалился", вы можете создать оболочку для OutputStream
, которая поймает IOException
в методах записи (и т. Д.) И перемотает это завернуто в какое-то непроверенное исключение.