Método arrojable setStackTrace() en Java con ejemplos

El método setStackTrace(StackTraceElement[] stackTrace) de la clase Throwable se usa para establecer los elementos de seguimiento de la pila en este objeto arrojable y getStackTrace() devolverá este seguimiento de la pila e imprimirá printStackTrace() y los métodos relacionados. Este método permite al usuario anular el seguimiento de pila predeterminado que genera fillInStackTrace() cuando se construye un elemento arrojable o que se deserializa cuando se lee un elemento arrojable de un flujo de serialización. 
Si el seguimiento de la pila de cualquier Throwable no se puede escribir, llamar a este método no tiene otro efecto que validar su argumento.
Sintaxis: 
 

public void 
    setStackTrace(StackTraceElement[] stackTrace)

Parámetros: este método acepta solo un parámetro stackTrace , que son los elementos de seguimiento de la pila que se asociarán con este Throwable.
Devoluciones: Este método no devuelve nada.
Los siguientes programas ilustran el método setStackTrace():
Ejemplo 1: 
 

Java

// Java program to demonstrate
// the setStackTrace () Method.
 
import java.io.*;
 
class GFG {
 
    // Main Method
    public static void main(String[] args)
        throws Exception
    {
 
        try {
 
            testException1();
        }
 
        catch (Throwable e) {
 
            // access to the stack trace
            StackTraceElement[] trace = e.getStackTrace();
 
            System.out.println(trace[0].toString());
        }
    }
 
    // method which throws Exception
    public static void testException1()
        throws Exception
    {
 
        // create a new Exception
        Exception ex = new Exception();
 
        StackTraceElement[] trace = new StackTraceElement[] {
            new StackTraceElement("ClassNameOfExe",
                                  "methodNameOfExe",
                                  "fileNameOfExe",
                                  10)
        };
 
        // sets the stack trace elements
        ex.setStackTrace(trace);
 
        // throw the Throwable[
        throw ex;
    }
}
Producción: 

ClassNameOfExe.methodNameOfExe(fileNameOfExe:10)

 

Ejemplo 2:
 

Java

// Java program to demonstrate
// the setStackTrace () Method.
 
import java.io.*;
 
class GFG {
 
    // Main Method
    public static void main(String[] args)
        throws Exception
    {
 
        try {
 
            Exceptiontest();
        }
 
        catch (Throwable e) {
 
            // access to the stack trace
            StackTraceElement[] trace = e.getStackTrace();
 
            System.out.println("StackTraceElement length :"
                               + trace.length);
 
            for (int i = 0; i < trace.length; i++) {
 
                System.out.println("Stack Trace at index "
                                   + i + " : "
                                   + trace[i]);
            }
        }
    }
 
    // method which throws Exception
    public static void Exceptiontest()
        throws Exception
    {
 
        // create a new Exception
        ArrayStoreException ex = new ArrayStoreException();
 
        StackTraceElement[] trace = new StackTraceElement[] {
            new StackTraceElement("ClassName1", "methodName1",
                                  "fileName1", 10),
            new StackTraceElement("ClassName2", "methodName2",
                                  "fileName2", 20),
            new StackTraceElement("ClassName3", "methodName3",
                                  "fileName3", 14)
        };
 
        // sets the stack trace elements
        ex.setStackTrace(trace);
 
        throw ex;
    }
}
Producción: 

StackTraceElement length :3
Stack Trace at index 0 : ClassName1.methodName1(fileName1:10)
Stack Trace at index 1 : ClassName2.methodName2(fileName2:20)
Stack Trace at index 2 : ClassName3.methodName3(fileName3:14)

 

Referencias: 
https://docs.oracle.com/javase/10/docs/api/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)
 

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 *