RuntimeException and its subtypes are treated as unchecked exceptions, because that's the way the JLS defines it
JLS 11.1.1 wrote:
The class RuntimeException is a direct subclass of Exception. RuntimeException is the superclass of all the exceptions which may be thrown for many reasons during expression evaluation, but from which recovery may still be possible.
RuntimeException and all its subclasses are, collectively, the runtime exception classes.
...
The unchecked exception classes are the runtime exception classes and the error classes.
The checked exception classes are all exception classes other than the unchecked exception classes. That is, the checked exception classes are all subclasses of Throwable other than RuntimeException and its subclasses and Error and its subclasses.
Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.