Существует два вида исключений в Java: проверено и unchecked исключений.
Для отмеченных исключений компилятор проверяет, обрабатывает ли ваша программа их либо путем их поиска, либо путем указания (с предложением throws
) метода, в котором может возникнуть исключение, что метод может вызывать такое исключение.
Классы исключений, которые являются подклассами java.lang.RuntimeException
(и RuntimeException
), являются незафиксированными исключениями. Для этих исключений компилятор не выполняет проверку - поэтому вам не требуется их ловить или указать, что вы можете их бросить.
Класс InterruptedException
является проверенным исключением, поэтому вы должны либо поймать его, либо объявить, что ваш метод может его выбросить. Вы выбрасываете исключение из catch
блока, так что вы должны указать, что метод может бросить его:
public void invalid() throws InterruptedException {
// ...
Exception классы, которые расширяют java.lang.Exception
(кроме RuntimeException
и подклассов) проверяются исключение.
Для получения более подробной информации см. Sun Java Tutorial about exceptions.
Какая у вас ошибка? – Simon
В нем говорится: незарегистрированное исключение java.lang.InterruptedException; должен быть пойман или объявлен брошенным – fireshadow52