Me gusta el ejemplo encontró here:
HighLevelException: MidLevelException: LowLevelException
at Junk.a(Junk.java:13)
at Junk.main(Junk.java:4)
Caused by: MidLevelException: LowLevelException
at Junk.c(Junk.java:23)
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
... 1 more
Caused by: LowLevelException
at Junk.e(Junk.java:30)
at Junk.d(Junk.java:27)
at Junk.c(Junk.java:21)
... 3 more
Básicamente en el código fuente, main
llama function a
la que se pide que se pide ... function b
que exige function e
. Function e
tiros un LowLevelException
que hace que la función de c para coger el LowLevelException
y lanzar una MidLevelException
(envolviendo la instancia LowLevelException
MidLevelException
interior de la instancia. La clase Exception
tiene un constructor que es capaz de tomar en una excepción diferente, envolviéndolo). Esto hace que la función a capture el MidLevelException
y arroje un HighLevelException
que ahora envuelve las dos instancias previas de Exception
.
Como se señala en las otras respuestas, el seguimiento de la pila no está realmente truncado, está viendo el seguimiento completo de la pila. El .. .3 more
en mi ejemplo está ahí porque de otra manera sería redundante. Si usted quería ser redundantes y líneas de salida de residuos, .. 3 more
podría estar sustituidos con
at Junk.b(Junk.java:17)
at Junk.a(Junk.java:11)
at Junk.main(Junk.java:4)
pero no hay necesidad de salida de estas tres líneas, porque ya están implícitas.
¿Qué? La causa es la misma que la excepción de envoltura? No lo obtuve ... El código debe mostrar la línea de donde proviene el problema, lo que no se muestra al truncar la pila. Tengo este problema y me gustaría entender esta respuesta, si alguien pudiera reformularla ... ¡Gracias!Por cierto, esta respuesta parece no mostrar cómo imprimir la pila completa. –
@TomBrito ESTÁS viendo la stacktrace completa; tienes dos excepciones, una dentro de la otra. Si la traza de la pila de la excepción interna (envuelta) es ABCDEFG, y la traza de la pila de la excepción externa es ABCZ, entonces verá OuterException con el trazo de pila ZCBA, "causado por" InnerException con el seguimiento de pila "GFEDC ..." luego 2 más '". Esos 2 más son A y B, del rastro de la pila exterior, y se omiten por brevedad. – Cowan