The possible exceptions in a Java program are organized in a hierarchy of classes,
rooted at class Throwable
(§20.22), a direct subclass of Object
. The
classes Exception
and Error
are direct subclasses of Throwable
. The class
RuntimeException
is a direct subclass of Exception
.
The exception classes declared by the standard packages java.lang, java.util, java.io and java.net are called the standard exception classes.
Java programs can use the pre-existing exception classes in throw
statements, or define additional exception classes, as subclasses of Throwable
or of any of its subclasses, as appropriate. To take advantage of Java's compile-time checking for exception handlers, it is typical to define most new exception classes as checked exception classes, specifically as subclasses of Exception
that are not subclasses of RuntimeException
.