2009-07-22 9 views

risposta

98

Non è necessario; quell'informazione è presente altrove nella traccia dello stack. Dai documenti di printStackTrace():

Nota la presenza di righe contenenti i caratteri "...". Queste righe indicano che il resto dell'analisi dello stack per questa eccezione corrisponde al numero indicato di frame dal fondo della traccia dello stack dell'eccezione causata da questa eccezione (l'eccezione "che include").

Questa stenografia può ridurre notevolmente la lunghezza dell'output nel caso comune in cui un'eccezione avvolta viene generata dallo stesso metodo in cui viene rilevata l'"eccezione causativa".

In altre parole, l'"... x more" appare solo su un'eccezione incatenato, e solo quando le ultime x righe dello stack sono già presenti come parte di stack di un'altra eccezione concatenata.

Supponiamo che un metodo catturi l'eccezione Foo, lo avvolga nella barra di eccezione e getta la barra. Quindi la traccia dello stack di Foo sarà accorciata. Se per qualche ragione vuoi la traccia completa, devi solo prendere l'ultima riga prima dello ... nella traccia dello stack di Foo e cercarla nella traccia dello stack della Barra; tutto ciò che si trova al di sotto di quella linea è esattamente ciò che sarebbe stato stampato nella traccia di stack di Foo.

+0

Contro questo. Sto aggiungendo a questo thread 6 anni dopo, quindi c'è una buona possibilità che le cose siano cambiate. Ecco il pastebin sul mio stacktrace. Non vedo alcuna sovrapposizione come suggerisce questa risposta: http://pastebin.com/raw/QQ7EGzSK Mi manca qualcosa? – Shadoninja

3

Indovina rapidamente un metodo per te.

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