Начал обучение Java неделю назад, а также решил изучить правильный способ работы с исключениями. Java действительно сводит меня с ума мыслью о том, чтобы указать исключения, которые метод может бросить как часть своей подписи.
В настоящее время я пытаюсь реализовать многопоточный сервер для клиент-серверного приложения. Я был очень удивлен тем, что socket.close()
может вызывать IOException. Вопрос в том, что мне делать, если это произойдет?
...
final Socket socket = .... // at this point I know that I have a good socket
try {
..... // communicating with someone on that side....
} catch(IOException e) {
// communication failed
// this fact is useful, I can log it
// and will just hang up
} finally {
try {
socket.close(); // bye-bye
} catch(IOException e) {
// anything but logging I can do here?
}
}
...
Эта часть кода выполняется в отдельном потоке, поэтому мне просто нужно поймать все исключения. Проблема в основном психологическая - я знаю, я могу просто оставить блок catch
пустым, но я стараюсь избегать этого трюка.
Любые мысли?