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.
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.
Stacktrace abrufen:
StackTraceElement[] ste = Thread.currentThread().getStackTrace();
Stacktrace drucken (JAVA 8+):
Arrays.asList(ste).forEach(System.out::println);
Stacktrage drucken (JAVA 7):
StringBuilder sb = new StringBuilder();
for (StackTraceElement st : ste) {
sb.append(st.toString() + System.lineSeparator());
}
System.out.println(sb);
Ich habe eine Dienstprogramm-Methode, die eine Zeichenfolge mit dem Stacktrace zurückgibt:
static String getStackTrace(Throwable t) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw, true);
t.printStackTrace(pw);
pw.flush();
sw.flush();
return sw.toString();
}
Und einfach logit wie...
...
catch (FileNotFoundException e) {
logger.config(getStackTrace(e));
}
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.