Что верно про иерархию Throwable?
Throwable → Error и Exception; RuntimeException — наследник Exception. Checked = Exception минус RuntimeException. Error (OutOfMemoryError, StackOverflowError) — среда в нерабочем состоянии, ловить бессмысленно; catch (Exception) его не ловит.
- catch (Throwable) — только на самой границе, для логирования
- OutOfMemoryError после перехвата оставляет JVM в непредсказуемом состоянии
- Свои исключения наследуют от Exception или RuntimeException, не от Error
А ещё -XX:+ExitOnOutOfMemoryError — дать оркестратору перезапустить процесс
Подробно
Практическая ценность разделения в том, чтобы понимать, что ловить. Error (OutOfMemoryError, StackOverflowError) означает, что среда исполнения в нерабочем состоянии — перехватывать его бессмысленно и вредно, потому что дальнейшая работа непредсказуема. Checked-исключения компилятор заставляет объявить или обработать: замысел был в том, чтобы восстановимые сбои нельзя было проигнорировать. Unchecked обычно означают ошибку программиста. Ловить Throwable почти никогда не нужно — так вы перехватите и Error. Отдельно стоит помнить, что многие современные API и языки на JVM отказались от checked-исключений как от идеи, которая на практике порождает больше пустых catch, чем корректной обработки.
Что хотят услышать
- Структура иерархии.
- Почему не ловят Error.
Частые ошибки
- Ловить Throwable или Error «на всякий случай».
- Считать, что catch (Exception e) перехватывает всё.
Проверьте себя
Несколько верных вариантов. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗catch (Exception e) перехватит в том числе OutOfMemoryError, ведь это тоже исключение
- ✓Throwable делится на Error и Exception; RuntimeException наследует Exception
- ✓Checked — это Exception и его наследники, кроме RuntimeException
- ✓Error означает проблемы, после которых обычно не восстанавливаются
Что спросят дальше
- Почему пустой catch — антипаттерн?
- Что такое цепочка причин и зачем передавать cause?
Разбор темы
- Исключения: иерархия и checked/unchecked
Дерево Throwable, философия checked против unchecked, раскрутка стека и стоимость, цепочки причин и практики обработки.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.