2009-07-22 7 views

Respuesta

98

No es necesario; esa información está presente en otra parte del rastro de la pila. De los documentos de printStackTrace():

Tenga en cuenta la presencia de líneas que contienen los caracteres "...". Estas líneas indican que el resto del seguimiento de la pila para esta excepción coincide con el número indicado de fotogramas de la parte inferior del seguimiento de la pila de la excepción causada por esta excepción (la excepción "adjuntando").

Esta taquigrafía puede reducir en gran medida la longitud de la salida en el caso común donde se arroja una excepción envuelta desde el mismo método que la "excepción causativa".

En otras palabras, el "... x more" sólo aparece en una excepción encadenado, y sólo cuando los últimos x líneas de la traza de la pila ya están presentes como parte del seguimiento de la pila de otra excepción encadenado.

Supongamos que un método detecta la excepción Foo, lo envuelve en la barra de excepción y arroja la barra. Luego, la traza de pila de Foo se acortará. Si por algún motivo quieres la traza completa, todo lo que tienes que hacer es tomar la última línea antes del ... en la traza de pila de Foo y buscarla en el seguimiento de la pila del Bar; todo lo que está debajo de esa línea es exactamente lo que se habría impreso en la pila de Foo.

+0

Discutiría en contra de esto. Estoy agregando a este hilo 6 años después, por lo que hay una buena probabilidad de que las cosas hayan cambiado. Aquí está el pastebin a mi stacktrace. No veo ninguna superposición como sugiere esta respuesta: http://pastebin.com/raw/QQ7EGzSK ¿Me estoy perdiendo algo? – Shadoninja

3

Adivina rápidamente un método para ti.

static void printLongerTrace(Throwable t){ 
    for(StackTraceElement e: t.getStackTrace()) 
     System.out.println(e); 
} 
Cuestiones relacionadas