CIS 35A: Introduction to Java Programming

Home | Green Sheet | Lectures | Assignments | FAQ | Grades

Exceptions

Exceptions handling
Custom exception classes
Use exception chaining

How to use exception chaining

  • Exception chaining lets you maintain exception information for exceptions that are caught when new exceptions are thrown.
  • Exception chaining uses the cause field, which represents the original exception that caused the current exception to be thrown.
  • You can set the cause of an exception via the exception's constructor or by using the initCause method.
  • You can retrieve an exception's cause by using the getCause method.

Constructors and methods of the Throwable class for exception chaining

Constructor Description
Throwable(cause) Creates a new exception with the specified exception object as its cause.
Throwable(message, cause) Creates a new exception with the specified message and cause.
Method Description
getCause() Returns the exception object that represents this exception's cause.
initCause(cause) Sets the exception's cause to the specified exception. Can be called only once. If you initialize the cause via the constructor, you can't call this method at all.

A custom exception class that uses exception chaining

public class ProductDAOException extends Exception
{
    public ProductDAOException()
    {
    }

    public ProductDAOException(Throwable cause)
    {
        super(cause);
    }
}

Code that throws ProductDAOException with chaining

catch (IOException e)
{
    throw new ProductDAOException(e);
}

Code that catches ProductDAOException and displays the cause

catch (ProductDAOException e)
{
    System.out.println(
        "A ProductDAOException has occurred.");
    System.out.println(e.getCause().toString());
}

Resulting output

A ProductDAOException has occurred.
java.io.IOException: IOException
Previous | Create your own exception class | Use exception chaining | Exception-Handling Techniques | Next