Junior
40
questionbank

Расскажи об иерархии исключений в Java.

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

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

Основные подклассы Throwable:

  • Error: Представляют серьезные проблемы, от которых приложение обычно не может оправиться (например, OutOfMemoryError, StackOverflowError). Они не предназначены для перехвата и обработки в обычном коде приложения.
  • Exception: Представляют условия, от которых приложение может попытаться восстановиться.
    • RuntimeException: Подкласс Exception, исключения времени выполнения (например, NullPointerException, ArrayIndexOutOfBoundsException). Компилятор не требует их объявления или перехвата (unchecked исключения).
    • Остальные подклассы Exception: Checked исключения (например, IOException, SQLException). Компилятор требует их объявления в сигнатуре метода (throws) или перехвата (try-catch).

Структура иерархии:

plaintext

Ключевое различие между Error, RuntimeException и checked Exception:

Тип исключенияChecked?Что представляет?Примеры
ErrorНетСерьезные системные проблемыOutOfMemoryError
RuntimeExceptionНетОшибки в логике программыNullPointerException
Checked ExceptionДаОжидаемые, но нежелательные событияIOException, SQLException

Принцип перехвата:

  • try-catch-finally блоки используются для обработки исключений.
  • Можно перехватывать исключения по их классу. Перехват более общего класса исключений перехватывает и его подклассы.
  • Порядок блоков catch важен: более специфичные исключения должны быть перехвачены раньше более общих.
java

Создание собственных исключений:

  • Обычно наследуются от Exception (для checked) или RuntimeException (для unchecked).