← Назад к вопросам

Что такое иерархия исключений?

1.2 Junior🔥 151 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Иерархия исключений в Java

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

Основная иерархия

Throwable
├── Error
│   ├── OutOfMemoryError
│   ├── StackOverflowError
│   ├── VirtualMachineError
│   └── ...
└── Exception
    ├── IOException
    ├── SQLException
    ├── RuntimeException
    │   ├── NullPointerException
    │   ├── ClassCastException
    │   ├── ArrayIndexOutOfBoundsException
    │   ├── ArithmeticException
    │   └── ...
    └── ...

Основные категории

Throwable — базовый класс для всех ошибок и исключений. Все, что может быть выброшено оператором throw, должно наследоваться от Throwable.

Error — серьёзные проблемы, которые обычно не должны перехватываться приложением:

  • OutOfMemoryError — недостаточно памяти
  • StackOverflowError — переполнение стека вызовов
  • VirtualMachineError — критические ошибки JVM

Ошибки указывают на проблемы с JVM или системными ресурсами.

Exception — исключительные ситуации, которые приложение должно обрабатывать:

  • Checked exceptions — проверяемые исключения (наследники Exception, но не RuntimeException)
  • Unchecked exceptions (RuntimeException и потомки) — непроверяемые исключения

Проверяемые vs непроверяемые исключения

// Checked Exception — должен перехватить или объявить throws
public void readFile(String path) throws IOException {
    FileReader reader = new FileReader(path);
    // ...
}

// Unchecked Exception — можно не перехватывать
public void divide(int a, int b) {
    int result = a / b; // ArithmeticException при b == 0
}

// Правильная обработка
try {
    readFile("file.txt");
} catch (IOException e) {
    System.err.println("Ошибка чтения файла: " + e.getMessage());
}

Практическое значение

Иерархия исключений позволяет:

  • Обрабатывать различные ошибки специализированным образом
  • Использовать полиморфизм для перехвата групп исключений
  • Отличать критические ошибки от обработанных ошибок
  • Создавать собственные исключения, наследуя от Exception

Понимание иерархии — ключ к правильной обработке ошибок в Java.