Почему требуется оператор 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.

Другие вопросы по тегам