It's defined in the Java Language Specification section 11.1.1.
Throwable
and all its subclasses are, collectively, the exception classes.
Exception
is the superclass of all the exceptions from which ordinary programs may wish to recover.
Error
is the superclass of all the exceptions from which ordinary programs are not ordinarily expected to recover.
Error
and all its subclasses are, collectively, the error classes.
[...]
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 run-time exception classes.
The unchecked exception classes are the run-time 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.