Java Exceptions are hierarchical and achieved by inheritance
to categorize different types of exceptions.
Throwable
is the parent class of Java Exceptions Hierarchy and it has two child
classes – Error
and Exception
.
Exceptions are further divided into two types checked
exceptions and unchecked exception.
Errors are exceptional scenarios that are out of scope of application and it’s not possible to anticipate and recover from them, for example hardware failure, JVM crash or out of memory error.
Checked Exceptions are exceptional scenarios that
we can anticipate in a program and try to recover from it, for
example FileNotFoundException. We should catch this exception and
provide useful message to user and log it properly for debugging
purpose. Exception
is the parent class
of all Checked Exceptions.
Unchecked Exceptions are caused by bad
programming, for example trying to retrieve an element from the
Array. We should check the length of array first before trying to
retrieve the element otherwise it might throw
ArrayIndexOutOfBoundException
at
runtime. RuntimeException
is the parent
class of all runtime exceptions.