Sobes.tech
Назад к вопросам
Junior — Middle
115

Чем отличаются проверяемые и непроверяемые исключения в языках программирования?

Компании, где спрашивали
СБЕР дейвайсыСБЕР дейвайсы

Ответ от нейросети

sobes.tech AI

В Java исключения делятся на проверяемые (checked) и непроверяемые (unchecked):

  • Проверяемые исключения (checked exceptions):

    • Наследуются от класса Exception, но не от RuntimeException.
    • Компилятор требует, чтобы такие исключения либо обрабатывались в блоке try-catch, либо объявлялись в сигнатуре метода через throws.
    • Используются для ситуаций, которые можно предвидеть и от которых можно восстановиться, например, IOException.
  • Непроверяемые исключения (unchecked exceptions):

    • Наследуются от RuntimeException.
    • Компилятор не требует их обязательной обработки или объявления.
    • Обычно сигнализируют о программных ошибках, таких как NullPointerException или IllegalArgumentException.

Пример:

public void readFile(String path) throws IOException { // checked exception
    // код чтения файла
}

public void setAge(int age) {
    if (age < 0) {
        throw new IllegalArgumentException("Возраст не может быть отрицательным"); // unchecked
    }
}

Таким образом, проверяемые исключения заставляют программиста явно обрабатывать потенциальные ошибки, а непроверяемые — сигнализируют о логических ошибках, которые обычно не обрабатываются явно.