InterruptedException от Thread.sleep ()

В Java Thread.sleep () бросает InterruptedException. Каков правильный поступок за этим исключением?

Если я

  1. распространить исключение цепочка вызовов?
  2. глотать исключение?
  3. сделайте что-то еще (предложите)?
10
задан Dominik Honnef 16 November 2012 в 07:12
поделиться

2 ответа

Вы должны повторно вызвать исключение.

Это отрывок от Брайана Гетца, автора замечательной книги « Java Concurrency in Practice »:

Работа с InterruptedException :

Если выброс InterruptedException означает что метод - это метод блокировки, затем вызов метода блокировки означает что ваш метод является методом блокировки тоже, и у вас должна быть стратегия для работы с InterruptedException. Часто самая простая стратегия - бросить InterruptedException, как показано в putTask () и getTask () методы в листинге 1. Это делает ваш метод реагирует на прерывание также и часто ничего не требует больше, чем добавление InterruptedException к вашей статье о бросках.

См .: Работа с InterruptedException

10
ответ дан 4 December 2019 в 01:29
поделиться

Если все, что вы пытаетесь сделать, это записать НЕКОТОРЫЕ время, я бы посоветовал просто перехватить и проигнорировать исключение.

Если, с другой стороны, вам нужно надлежащее время ожидания и любое превентивное прерывание ДЕЙСТВИТЕЛЬНО ПЛОХО для вашей программы, то вам определенно следует повторно выбросить исключение.

Это просто зависит от того, почему произошло исключение и каков ваш вариант использования Thread.sleep () в первую очередь.

0
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: