1128 Stimmen

Wie kann ich den aktuellen Stack-Trace in Java abrufen?

Wie erhalte ich die aktuelle Stapelverfolgung in Java, so wie man in .NET Folgendes tun kann Environment.StackTrace ?

Ich fand Thread.dumpStack() aber das ist nicht das, was ich will - ich möchte den Stack-Trace zurückbekommen, nicht ausdrucken.

1300voto

jjnguy Punkte 132790

Sie können verwenden [Thread.currentThread().getStackTrace()](https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace()) .

Das gibt ein Array von StackTraceElement s, die den aktuellen Stack-Trace eines Programms darstellen.

295voto

Yishai Punkte 87548
Thread.currentThread().getStackTrace();

ist in Ordnung, wenn es Ihnen egal ist, was das erste Element des Stapels ist.

new Throwable().getStackTrace();

hat eine definierte Position für Ihre aktuelle Methode, falls das wichtig ist.

209voto

Leif Gruenwoldt Punkte 13033
for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste);
}

68voto

mike rodent Punkte 12041

Tony hat als Kommentar zu der akzeptierten Antwort die wohl beste Antwort gegeben, die tatsächlich beantwortet die Frage des Auftraggebers :

Arrays.toString(Thread.currentThread().getStackTrace()).replace( ',', '\n' );

... die OP hat NICHT fragen, wie man eine String aus dem Stack-Trace einer Exception . Und obwohl ich ein großer Fan von Apache Commons bin, gibt es bei etwas so Einfachem wie dem oben genannten keinen logischen Grund, eine externe Bibliothek zu verwenden.

65voto

RealHowTo Punkte 33858
Thread.currentThread().getStackTrace();

ist seit JDK1.5 verfügbar.

Für eine ältere Version können Sie die exception.printStackTrace() zu einer StringWriter() :

StringWriter sw = new StringWriter();
new Throwable("").printStackTrace(new PrintWriter(sw));
String stackTrace = sw.toString();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X