Download the JDK
Search the Tutorials
Hide the TOC
Trail: Essential Classes
Lesson: Exceptions
Exceptions
What Is an Exception?
The Catch or Specify Requirement
Catching and Handling Exceptions
The try Block
The catch Blocks
The finally Block
Putting It All Together
Specifying the Exceptions Thrown by a Method
How to Throw Exceptions
Chained Exceptions
Creating Exception Classes
Unchecked Exceptions — The Controversy
Advantages of Exceptions
Summary
Questions and Exercises
Home Page > Essential Classes > Exceptions
Catching and Handling Exceptions

> This section describes how to use the three exception handler components — the `try`, `catch`, and `finally` blocks — to write an exception handler. The last part of this section walks through an example and analyzes what occurs during various scenarios.

> The following example defines and implements a class named `ListOfNumbers`. When constructed, `ListOfNumbers` creates a `Vector` that contains 10 `Integer` elements with sequential values 0 through 9. The `ListOfNumbers` class also defines a method named `writeList`, which writes the list of numbers into a text file called `OutFile.txt`. This example uses output classes defined in `java.io`, which are covered in Basic I/O.

> >     //Note: This class won't compile by design!
> >     import java.io.*;
> >     import java.util.Vector;

> >     public class ListOfNumbers {

> >         private Vector vector;
> >         private static final int SIZE = 10;

> >         public ListOfNumbers () {
> >             vector = new Vector(SIZE);
> >             for (int i = 0; i < SIZE; i++) {
> >                 vector.addElement(new Integer(i));
> >             }
> >         }

> >         public void writeList() {
> >             PrintWriter out = new PrintWriter(
> >                                 new FileWriter("OutFile.txt"));

> >             for (int i = 0; i < SIZE; i++) {
> >                 out.println("Value at: " + i + " = " +
> >                              vector.elementAt(i));
> >             }

> >             out.close();
> >         }
> >     }

> The first line in boldface is a call to a constructor. The constructor initializes an output stream on a file. If the file cannot be opened, the constructor throws an `IOException`. The second boldface line is a call to the `Vector` class's `elementAt` method, which throws an `ArrayIndexOutOfBoundsException` if the value of its argument is too small (less than 0) or too large (more than the number of elements currently contained by the `Vector`).

> If you try to compile the ``ListOfNumbers`` class, the compiler prints an error message about the exception thrown by the `FileWriter` constructor. However, it does not display an error message about the exception thrown by `elementAt`. The reason is that the exception thrown by the constructor, `IOException`, is a checked exception, and the one thrown by the `elementAt` method, `ArrayIndexOutOfBoundsException`, is an unchecked exception.

> Now that you're familiar with the `ListOfNumbers` class and where the exceptions can be thrown within it, you're ready to write exception handlers to catch and handle those exceptions.

Previous page: The Catch or Specify Requirement
Next page: The try Block