Иерархия исключений в 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).