The class Exception and its subclasses are a form of
Throwable that indicates conditions that a reasonable
application might want to catch.
The class Exception and any subclasses that are not also
subclasses of RuntimeException are checked
exceptions. Checked exceptions need to be declared in a
method or constructor's throws clause if they can be thrown
by the execution of the method or constructor and propagate outside
the method or constructor boundary.
extends
java.lang.Error
@jls 11.2 Compile-Time Checking of Exceptions