Sobes.tech
Назад к вопросам
Senior
4

Расскажите про иерархию исключений в Java, проверяемые и непроверяемые исключения

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

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

sobes.tech AI

В Java иерархия исключений начинается с класса java.lang.Throwable, который имеет два основных подкласса: Error и Exception.

  • Error — ошибки, которые обычно не обрабатываются приложением (например, OutOfMemoryError). Они указывают на серьезные проблемы в JVM.

  • Exception — исключения, которые могут быть обработаны программой. Исключения делятся на:

    1. Проверяемые исключения (checked exceptions) — наследуются от Exception, но не от RuntimeException. Компилятор требует, чтобы такие исключения либо обрабатывались в блоке try-catch, либо объявлялись в сигнатуре метода через throws. Пример: IOException, SQLException.

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

Пример:

try {
    // код, который может вызвать IOException
} catch (IOException e) {
    e.printStackTrace();
}

// Непроверяемое исключение можно не обрабатывать
int a = 5 / 0; // ArithmeticException

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