Когда мы создаем CustomException путем расширения класса Exception, оно проверяется компилятором, но даже несмотря на то, что RuntimeExceptions расширяет класс Exception, они не проверяются компилятором.
Как это устанавливается в компиляторе. Я нашел раздел в JLS, в котором говорится Зачем.
Почему исключения времени выполнения не проверяются
Классы исключений времени выполнения (RuntimeException и его подклассы) освобождаются от проверки во время компиляции, потому что, по мнению разработчиков языка программирования Java, объявление таких исключений не принесет существенной пользы. в установлении корректности программ. Многие операции и конструкции языка программирования Java могут приводить к возникновению исключений во время выполнения. Информация, доступная компилятору, и уровень анализа, который выполняет компилятор, обычно недостаточны, чтобы установить, что такие исключения во время выполнения не могут возникнуть, даже если это может быть очевидно для программиста. Требование объявления таких классов исключений просто раздражало бы программистов.
Что-то происходит за кулисами, как в случае с маркерными интерфейсами.
Я ищу источник, который может объяснить, как это делается, а также почему нет родительского класса для всех проверенных исключений?