Иерархия исключений в Java
https://t.me/faangmasterЯ сразу рассмотрю несколько связанных вопросов с собеседования на Java программиста:
1) Какая иерархия исключений в Java?
2) Чем отличаются checked от unchecked исключений?
3) Что такое Error?
4) Какой пример Error вы знаете?
5) Можно и нужно ли перехватывать OutOfMemoryError?
6) Какие примеры RuntimeException вы знаете?
7) Можно и нужно ли перехватывать Throwable?
Иерархия исключений в Java:

Все классы в Java наследуют Object. Корнем иерархии исключений в Java является Throwable. У него есть два дочерних класса: Exception и Error.
RuntimeException является дочерним классом Exception. Примерами RuntimeException являются: NullPointerException, ArithmeticException. Их, конечно, намного больше.
От класса Exception наследуются много других классов. Например, IOException, SQLException и т.д.
Вторым дочерним классом Throwable является Error. Примерами Error являются: OutOfMemoryError, StackOverflowError. Дочерние классы Error указывают на серьезные проблемы в приложении. Обычное приложение не должно перехватывать Error. Они могут возникнуть в любой момент исполнения приложения. Но впринципе перехватывать их не запрещено компилятором. Также как и перехватить Throwable в try-catch. Но в большинстве случаем в этом нет смысла, т.к. вы не сможете его нормально обработать.
Исключения можно разделить на checked и unchecked.
checked исключения необходимо или перехватить в try-catch или добавить throws выражения в обьявления метода. Их еще называют compile-time исключениями. Примеры checked исключений: IOException, SQLException.
unchecked исключения не требуют добавления try-catch или throws выражений в обьявления методов. Их перехватить можно, но это не требуется компилятором. RuntimeException и его подклассы являются unchecked исключениями.
Error и его подклассы тоже относятся к unchecked исключениям. Их перехват не требуется компилятором. Они свидетельствуют о серьезных проблемах при выполнении приложения.
На картинке я выделил unchecked исключения зеленым цветом, а checked красным.