Método arrojable fillInStackTrace() en Java

El método fillInStackTrace() , de la clase java.lang.Throwable , registra dentro de este objeto Throwable información sobre el estado actual de los marcos de pila para el subproceso actual. Significa que al usar este método se pueden ver los mensajes de excepción del método actual de una clase, en el que se llama al método fillInStackTrace(). Si hay otros mensajes que se pueden derivar del método actual, en los que se lanza una excepción, entonces uno puede omitir estos otros detalles adicionales del mensaje.

Sintaxis:

public Throwable fillInStackTrace()

Valor de retorno: este método devuelve una referencia a este objeto Throwable en el que se aplica fillInStackTrace().

Los siguientes programas ilustran el método fillInStackTrace() de la clase Method:

Programa 1: este programa muestra qué resultados se imprimen si no se usa el método fillInStackTrace() y qué sucede si se usa el método fillInStackTrace()

Explicación: el uso de fillInStackTrace() solo devuelve información del estado activo de los marcos para el subproceso actual. Entonces, cuando se llama a fillInStackTrace(), el método devuelve detalles hasta el método principal en el que se llamó al método fillInStackTrace().

// Java program to demonstrate
// fillInStackTrace() method
  
public class GFG {
    // Main Method
    public static void main(String[] args) throws Throwable
    {
        GFG gfg = new GFG();
        try {
            // calling this method will throw exception
            gfg.method();
        }
        catch (Exception e) {
  
            // Exception details without using fillInStackTrace()
  
            System.out.println("Exception details without fillInStackTrace()\n");
            System.err.println("Caught Inside Main:");
            e.printStackTrace();
  
            // Exception details using fillInStackTrace()
  
            System.out.println("Exception details with fillInStackTrace()\n");
            System.err.println("Caught Inside Main:");
            e.fillInStackTrace();
            e.printStackTrace();
        }
    }
  
    // method calling divide operation
    public void method() throws Throwable
    {
        divide();
    }
  
    // divide operation throws ArithmeticException exception
    void divide()
    {
  
        try {
            System.out.println(10 / 0);
        }
        catch (ArithmeticException e) {
            throw e;
        }
    }
}

Producción:

Exception details without fillInStackTrace()

Caught Inside Main:
java.lang.ArithmeticException: / by zero
    at GFG.divide(GFG.java:38)
    at GFG.method(GFG.java:31)
    at GFG.main(GFG.java:13)

Exception details with fillInStackTrace()

Caught Inside Main:
java.lang.ArithmeticException: / by zero
    at GFG.main(GFG.java:23)

Programa 2: este programa imprime detalles después de aplicar fillInStackTrace().

Explicación: el uso de fillInStackTrace() solo devuelve información del estado activo de los marcos para el subproceso actual. Entonces, cuando se llama a fillInStackTrace(), el método devuelve detalles de la excepción hasta el método showResults en el que se llamó al método fillInStackTrace(). Pero el método main() muestra todos los detalles de la excepción porque no se llamó a fillInStackTrace() en el método principal.

// Java program to demonstrate
// fillInStackTrace() method
  
public class GFG {
  
    // Main Method
    public static void main(String[] args) throws Throwable
    {
        GFG gfg = new GFG();
        try {
            // calling this method will throw an exception
            gfg.showResults();
        }
        catch (Exception e) {
  
            // Exception details using fillInStackTrace()
            e.printStackTrace();
        }
    }
  
    // method calling exceptionThrownMethod()
    // and when method returns Exception
    // it is calling fillInStackTrace() method
    public void showResults() throws Throwable
    {
        try {
            exceptionThrownMethod();
        }
        catch (Exception e) {
            e.printStackTrace();
            throw e.fillInStackTrace();
        }
    }
  
    // method throwing exception
    public void exceptionThrownMethod() throws Exception
    {
        throw new Exception("this is thrown from function1()");
    }
}

Producción:

java.lang.Exception: this is thrown from function1()
    at GFG.exceptionThrownMethod(GFG.java:35)
    at GFG.showResults(GFG.java:27)
    at GFG.main(GFG.java:13)

java.lang.Exception: this is thrown from function1()
    at GFG.showResults(GFG.java:30)
    at GFG.main(GFG.java:13)

Referencia: https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html

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 *