Chapter 7. Exception Handling

An exception is an anomalous condition that alters or interrupts the flow of execution. Java provides built-in exception handling to deal with such conditions. Exception handling should not be part of normal program flow.

The Exception Hierarchy

As shown in Figure 7-1, all exceptions and errors inherit from the class Throwable, which inherits from the class Object.

Snapshot of the exception hierarchy
Figure 7-1. Snapshot of the exception hierarchy

Checked/Unchecked Exceptions and Errors

Exceptions and errors fall into three categories: checked exceptions, unchecked exceptions, and errors.

Checked Exceptions

  • Checked exceptions are checked by the compiler at compile time.
  • Methods that throw a checked exception must indicate so in the method declaration using the throws clause. This must continue all the way up the calling stack until the exception is handled.
  • All checked exceptions must be explicitly caught with a catch block.
  • Checked exceptions include exceptions of the type Exception, and all classes that are subtypes of Exception, except for RuntimeException and the subtypes of RuntimeException.

The following is an example of a method that throws a checked exception:

// Method declaration that throws
// an IOException
void readFile(String filename)
  throws IOException {
  ...
}

Unchecked Exceptions

  • The compiler does not check unchecked exceptions at compile time.
  • Unchecked exceptions occur during ...

Get Java 8 Pocket Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.