На приведенном ниже рисунке показано, что "Проверено" и "Непроверено" Исключения являются подклассами Exception. Я сбиваю с толку, что вам нужно поймать Exception, но вам не нужно ловить RuntimeException, который непосредственно наследуется от Exception. Есть ли причина, по которой разработчики не позволяли нам бросать Исключения, не требуя их поймать?
В частности: почему вы можете игнорировать только RuntimeExceptions и это дети? Почему не было класса, введенного под названием CheckedException extends Exception, и вам нужно только его поймать и это дети?
Сбивая с толку часть, вы можете выбросить все ниже RuntimeException без проблем, но когда вы переходите к Exception в иерархии, вам нужно поймать ее в какой-то момент. Это сбивает с толку, потому что "абстракция" обычно работает иначе. Чем больше вы продвигаетесь, тем больше становится все больше и больше мета. Здесь не так. Чем больше вы двигаетесь вверх, тем больше вам нужно делать (например, ставить try/catch после достижения Exception).
