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