Exception chaining in Java

When one exception is chained to the another, it describes the cause of that exception. Constructors of the Throwable class support chained exceptions in Java. They are as follows −

Throwable(Throwable cause)
Throwable(String msg, Throwable cause)

The Throwable class has methods which support exception chaining −

getCause()Returns the original cause of the exception
initCause(Throwable cause)Sets the cause for invoking the exception

Let us see an example of exception chaining in Java.


 Live Demo

public class Example {
   public static void main(String[] args) {
      try {
         // creating an exception
         ArithmeticException e = new ArithmeticException("Apparent cause");
         // set the cause of an exception
         e.initCause(new NullPointerException("Actual cause"));
         // throwing the exception
         throw e;
      } catch(ArithmeticException e) {
         // Getting the actual cause of the exception


java.lang.NullPointerException: Actual cause