Chained Exceptions in Java - GeeksforGeeks

23 Dec, 2016
Chained Exceptions allows to relate one exception with another exception, i.e one exception describes cause of another exception. For example, consider a situation in which a method throws an ArithmeticException because of an attempt to divide by zero but the actual cause of exception was an I/O error which caused the divisor to be zero. The method will throw only ArithmeticException to the caller. So the caller would not come to know about the actual cause of exception. Chained Exception is used in such type of situations.
Constructors Of Throwable class Which support chained exceptions in java :
Throwable(Throwable cause) :- Where cause is the exception that causes the current exception.Throwable(String msg, Throwable cause) :- Where msg is the exception message and cause is the exception that causes the current exception.
Throwable(Throwable cause) :- Where cause is the exception that causes the current exception.
Throwable(String msg, Throwable cause) :- Where msg is the exception message and cause is the exception that causes the current exception.
Methods Of Throwable class Which support chained exceptions in java :
getCause() method :- This method returns actual cause of an exception.initCause(Throwable cause) method :- This method sets the cause for the calling exception.
getCause() method :- This method returns actual cause of an exception.
initCause(Throwable cause) method :- This method sets the cause for the calling exception.
Example of using Chained Exception:
// Java program to demonstrate working of chained exceptionspublic class ExceptionHandling{    public static void main(String[] args)    {        try        {            // Creating an exception            NumberFormatException ex =                       new NumberFormatException("Exception");              // Setting a cause of the exception            ex.initCause(new NullPointerException(                      "This is actual cause of the exception"));              // Throwing an exception with cause.            throw ex;        }          catch(NumberFormatException ex)        {            // displaying the exception            System.out.println(ex);              // Getting the actual cause of the exception            System.out.println(ex.getCause());        }    }}
Output:
java.lang.NumberFormatException: Exception
java.lang.NullPointerException: This is actual cause of the exception

This article is contributed by Pratik Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Java-Exceptions
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Interfaces in Java
ArrayList in Java
Stream In Java
Stack Class in Java
Singleton Class in Java
Set in Java
Overriding in Java
LinkedList in Java
Collections in Java
Initializing a List in Java