В Java Thread.sleep() выдает InterruptedException. Что правильно делать с этим исключением?
Нужно ли мне
- распространять исключение вверх по цепочке вызовов?
- проглотить исключение?
- делать что-то еще (пожалуйста, предложите)?
В Java Thread.sleep() выдает InterruptedException. Что правильно делать с этим исключением?
Нужно ли мне
Вы должны повторно создать исключение.
Это реферат Брайана Гетца, автора прекрасной книги "Java Concurrency in Practice":
Что делать с InterruptedException:
Если создание InterruptedException означает, что метод является блокирующим, то вызов блокирующего метода означает, что ваш метод также является блокирующим, и у вас должна быть стратегия для работы с InterruptedException. Часто самой простой стратегией является создание InterruptedException самостоятельно, как показано в методах putTask() и getTask() в листинге 1. Это также делает ваш метод чувствительным к прерыванию и часто не требует ничего, кроме добавления InterruptedException в предложение throws.
См.: Работа с InterruptedException
Если все, что вы пытаетесь сделать, это сжечь НЕКОТОРОЕ время, я бы предложил просто перехватить и проигнорировать исключение.
Если, с другой стороны, вам нужно надлежащее время ожидания, и любое упреждающее прерывание ДЕЙСТВИТЕЛЬНО ПЛОХО для вашей программы, тогда вам определенно следует повторно сгенерировать исключение.
Это просто зависит от того, почему произошло исключение и каков ваш вариант использования для Thread.sleep()
в первую очередь.