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; } }
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; } }
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