Что делает возможным, чтобы дочерний класс, т.е. RuntimeException, не проверялся, а Exception проверялся? - PullRequest
0 голосов
/ 23 декабря 2018

Что позволяет думать, что компилятор RuntimeException не проверен, хотя RuntimeException также имеет тип Exception.Но Exception это проверенное исключение?

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

То есть проверенные классы исключений: Throwable и все его подклассы, кроме RuntimeException и его подклассов и Error и его подклассов.

JLS11> Исключения> Виды исключений

Это правило, и компилятор знает об этом.Тот факт, что данное исключение является подклассом RuntimeException (скажем, givenException instanceof RuntimeException), достаточен для компилятора, чтобы не рассматривать его как проверенное исключение.

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

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

JLS 11> Исключения> Виды исключений

0 голосов
/ 23 декабря 2018

Компилятор Java определяет как Error, так и RuntimeException как два специальных дочерних класса Throwable, чтобы указать тип исключений, которые вы не можете ожидать, и, таким образом, компилятор не может заставить вас обрабатывать его во время компиляции.Любой класс, который расширяет любого из этих двух дочерних элементов (Error и RuntimeException), будет наследовать ту же обработку компилятором.

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

...