Почему требуется оператор try catch?
Почему в Java требуется оператор обработки исключений try / catch для следующей строки:
TimeUnit.MILLISECONDS.sleep(250);
Я просто хочу, чтобы мой код спал в течение 250 миллисекунд перед выполнением следующей строки. Почему требуется оператор try-catch? Я не могу предвидеть никаких исключений с этим. Функция сна в python не требует попытки catch.
Исключение, которое я получаю в среде IDE без добавления команды try:
Error:(124, 40) error: unreported exception InterruptedException; must be caught or declared to be thrown
Когда я окружаю его в try catch, как показано ниже, он работает нормально:
try {
TimeUnit.MILLISECONDS.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
2 ответа
Вам нужно перехватить исключение просто потому, что поток (спящий) может быть прерван, и вам нужно перехватить прерывание.
Из описания Oracle InterruptedException
Брошенный, когда поток ожидает, спит или иным образом занят, и поток прерывается, или до или во время действия.
Прерывание спящего потока - очень важная часть Java. Он обеспечивает контроль, когда вам нужно остановить приложение (или процесс) и не хотите, чтобы его останавливали из-за спящего потока. InterruptException позволяет разработчикам отлавливать попытки прерывания и обрабатывать его.
Может быть, ваша говядина с проверенными исключениями в целом.... это особенность Java, которая не нравится многим людям. Мы можем понять ваше разочарование проверенными исключениями. Вы можете прочитать больше о проверенных исключениях в Java через Google.