Спецификация Java 11: 11.1. Виды и причины исключений

11.1.1. Виды исключений

Исключение представляет экземпляр класса Throwable (прямой подкласс Object) или один из его подклассов.

Throwable и все его подклассы вместе составляют классы исключений.

Классы Exception и Error являются прямыми подклассами Throwable:

  • Exception - это суперкласс всех исключений, из которых обычные программы могут захотеть восстановиться.

    Класс RuntimeException является прямым подклассом Exception. RuntimeException - это суперкласс всех исключений, которые могут быть вызваны по многим причинам во время оценки выражения, но восстановление из которых все еще возможно.

    RuntimeException и все его подклассы в совокупности являются классами исключений времени выполнения.

  • Error - это суперкласс всех исключений, от которых обычно не ожидается восстановление обычных программ.

    Error и все ее подклассы вместе составляют классы ошибок.

Непроверенные (unchecked) классы исключений - это классы исключений времени выполнения и классы ошибок.

Проверенные (checked) классы исключений - это все классы исключений, кроме непроверенных классов исключений. То есть проверенные классы исключений - это Throwable и все его подклассы, кроме RuntimeException и его подклассов, а также Error и его подклассов.

Программы могут использовать уже существующие классы исключений API платформы Java SE в операторах throw или определять дополнительные классы исключений как подклассы Throwable или любого из его подклассов, в зависимости от ситуации. Чтобы воспользоваться проверкой во время компиляции для обработчиков исключений, типично определять большинство новых классов исключений как проверенные классы исключений, то есть как подклассы Exception, которые не являются подклассами RuntimeException.

Класс Error является отдельным подклассом Throwable, отличным от Exception в иерархии классов, чтобы позволить программам использовать идиому "} catch (Exception e) {" для перехвата всех исключений, из которых возможно восстановление без выявления ошибок, восстановление которых обычно невозможно.

Обратите внимание, что подкласс Throwable не может быть универсальным.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки