Почему требуется оператор try catch?

Почему в Java требуется оператор обработки исключений try/catch для следующей строки:

TimeUnit.MILLISECONDS.sleep(250);

Я просто хочу, чтобы мой код спал в течение 250 миллисекунд перед выполнением следующей строки. Почему требуется оператор try-catch? Я не вижу здесь никаких исключений. Функция сна в python не требует попытки улова.

Исключение, которое я получаю в среде IDE без добавления попытки перехвата:

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();
    }

person codepurveyor    schedule 22.04.2018    source источник


Ответы (2)


Вам нужно поймать исключение просто потому, что работающий (спящий) поток может быть прерван, и вам нужно поймать прерывание.

Из описания InterruptedException в Oracle

Генерируется, когда поток ожидает, спит или иным образом занят, и поток прерывается либо до, либо во время действия.

person Akhadra    schedule 22.04.2018

Прерывание спящего потока — очень важная часть Java. Он обеспечивает контроль, когда вам нужно остановить приложение (или процесс) и вы не хотите, чтобы это было остановлено из-за спящего потока. InterruptException позволяет разработчикам перехватывать попытки прерывания и обрабатывать их.

Может быть, ваша говядина связана с проверенными исключениями в целом .... это особенность Java, которая многим не нравится. Мы можем понять ваше недовольство проверенными исключениями. Вы можете узнать больше о проверенных исключениях в Java через Google.

person Jose Martinez    schedule 22.04.2018