Open In App

Throwable initCause() method in Java with Examples

Last Updated : 17 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

The initCause() method of Throwable class is used to initialize the cause of this Throwable with the specified cause passed as a parameter to initCause(). Actually, the cause is throwable that caused this throwable Object to get thrown when an exception occurs. This method can be called only once. Generally, This method is called from within the constructor, or immediately after creating the throwable. If the calling Throwable is created by using Throwable(Throwable) or Throwable(String, Throwable), then this method cannot be called even once. 

Syntax:

public Throwable initCause?(Throwable cause)

Parameters: This method accepts cause as a parameter which represents the cause of this Throwable. 

Returns: This method returns a reference to this Throwable instance. 

Exception: This method throws:

  • IllegalArgumentException if cause is this throwable.
  • IllegalStateException if this throwable was created with Throwable(Throwable) or Throwable(String, Throwable), or this method has already been called on this throwable.

Below programs illustrate the initCause method of Throwable class: 

Example 1: 

Java




// Java program to demonstrate
// the initCause() Method.
 
import java.io.*;
 
class GFG {
 
    // Main Method
    public static void main(String[] args)
        throws Exception
    {
 
        try {
 
            testException1();
        }
 
        catch (Throwable e) {
 
            System.out.println("Cause : "
                               + e.getCause());
        }
    }
 
    // method which throws Exception
    public static void testException1()
        throws Exception
    {
 
        // ArrayIndexOutOfBoundsException
        // This exception will be used as a Cause
        // of another exception
        ArrayIndexOutOfBoundsException
            ae
            = new ArrayIndexOutOfBoundsException();
 
        // create a new Exception
        Exception ioe = new Exception();
 
        // initialize the cause and throw Exception
        ioe.initCause(ae);
 
        throw ioe;
    }
}


Output:

Cause : java.lang.ArrayIndexOutOfBoundsException

Example 2: 

Java




// Java program to demonstrate
// the initCause() Method.
 
import java.io.*;
 
class GFG {
 
    // Main Method
    public static void main(String[] args)
        throws Exception
    {
 
        try {
 
            // add the numbers
            addPositiveNumbers(2, -1);
        }
        catch (Throwable e) {
 
            System.out.println("Cause : "
                               + e.getCause());
        }
    }
 
    // method which adds two positive number
    public static void addPositiveNumbers(int a, int b)
        throws Exception
    {
 
        // if Numbers are Positive
        // than add or throw Exception
        if (a < 0 || b < 0) {
 
            // create a Exception
            // when Numbers are not Positive
            // This exception will be used as a Cause
            // of another exception
            Exception
                ee
                = new Exception("Numbers are not Positive");
 
            // create a new Exception
            Exception anotherEXe = new Exception();
 
            // initialize the cause and throw Exception
            anotherEXe.initCause(ee);
 
            throw anotherEXe;
        }
 
        else {
 
            System.out.println(a + b);
        }
    }
}


Output:

Cause : java.lang.Exception: Numbers are not Positive

References: https://docs.oracle.com/javase/10/docs/api/java/lang/Throwable.html#initCause(java.lang.Throwable)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads