Il modo più semplice per sopprimere lo stacktrace su qualsiasi eccezione è
throwable.setStackTrace(new StackTraceElement[0]);
Se l'eccezione ha una causa, potrebbe essere necessario fare la stessa cosa in modo ricorsivo.
riduce Questa anche la creazione costosa della stack, per quanto possibile
Lo stacktrace di throwable viene inizializzato in
Throwable#fillInStackTrace()
, che è chiamato da qualsiasi costruttore e pertanto non può essere evitato. Quando viene utilizzato lo stacktrace realtà, uno StackTraceElement [] è pigramente costruito in
Throwable#getOurStackTrace()
che avviene solo se il Throwable.stackTrace campo non è già stato impostato.
L'impostazione dello stacktrace su qualsiasi valore non nullo, evita la costruzione dello StackTraceElement [] in Throwable # getOurStackTrace() e riduce il più possibile la penalizzazione delle prestazioni.
fonte
2016-10-14 13:50:46
Cosa JVM? Ambiente? ecc. Questo aiuta? http://stackoverflow.com/questions/4659151/recurring-exception-without-a-stack-trace-how-to-reset –
@SB. Sì, questo aiuta. Molte grazie. Ho un problema molto simile: ho un sacco di eccezioni (NPE). Il metodo 'error' di' log4j' registra alcune eccezioni _ senza traccia dello stack. – Michael