Método arrojable initCause() en Java con ejemplos

El método initCause() de la clase Throwable se usa para inicializar la causa de este Throwable con la causa especificada pasada como parámetro a initCause(). En realidad, la causa es el arrojable que provocó que este objeto arrojable se lanzara cuando se produce una excepción. Este método solo puede llamarse una vez. Generalmente, este método se llama desde dentro del constructor, o inmediatamente después de crear el arrojable. Si el Throwable que llama se crea usando Throwable(Throwable) o Throwable(String, Throwable), entonces este método no se puede llamar ni una sola vez.

Sintaxis:

public Throwable initCause?(Throwable cause)

Parámetros: Este método acepta causa como un parámetro que representa la causa de este Throwable.

Devoluciones: este método devuelve una referencia a esta instancia de Throwable.

Excepción: este método arroja:

  • IllegalArgumentException si la causa es arrojable.
  • IllegalStateException si este arrojable se creó con Throwable(Throwable) o Throwable(String, Throwable), o si este método ya se ha llamado en este arrojable.

Los siguientes programas ilustran el método initCause de la clase Throwable:

Ejemplo 1:

// 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 Exception
        // 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;
    }
}
Producción:

Cause : java.lang.ArrayIndexOutOfBoundsException

Ejemplo 2:

// 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);
        }
    }
}
Producción:

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

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

Publicación traducida automáticamente

Artículo escrito por AmanSingh2210 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *