Назад к задачам
Junior — Senior
4

Различия между проверяемыми и непроверяемыми исключениями в Java

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

В примере объявлены два пользовательских исключения: CheckedException, наследующий Exception, и UncheckedException, наследующий RuntimeException. При попытке выполнить throw new CheckedException(); компилятор выдаёт ошибку, потому что проверяемое исключение должно быть либо обработано в try‑catch, либо объявлено в сигнатуре метода с помощью throws. Чтобы устранить ошибку, необходимо добавить throws CheckedException к объявлению метода или обернуть вызов в блок try { … } catch (CheckedException e) { … }. Непроверяемое исключение UncheckedException компилятором не требует такой обработки.

public class JetbulbInterview {
    public static void main(String[] args) {
        // пример вызова методов
        try {
            raiseChecked();
        } catch (CheckedException e) {
            System.out.println("Caught checked exception");
        }
        raiseUnchecked();
    }

    static void raiseChecked() throws CheckedException {
        throw new CheckedException();
    }

    static void raiseUnchecked() {
        throw new UncheckedException();
    }
}

class CheckedException extends Exception {}

class UncheckedException extends RuntimeException {}