Wir haben die Funktionsverwendung von Java -Ausnahmestapel über Beispielcode analysiert und zwei Methoden für Java zusammengestellt, um die folgenden Informationen zum Ausnahmestapel zu erhalten. Das Folgende ist alles inhalt:
(Stack Trace) Ausnahmestack Trace bezieht sich auf:
Wenn das Throwable Throwable werfen, wirft das Throwable -Objekt mehrere Methoden auf, die Ebenen aufrufen (Methode Call Stack), dass der Prozess (Shuttle) durchläuft. Je näher Sie der Throw -Anweisung kommen, desto gründen Sie die Methode zuerst in den Ausnahmestapel.
(Throwable Kausalkette) Ausnahmekette Ursache:
Die Ursache Eigenschaft in der Throwable -Klasse repräsentiert die ursprüngliche Ausnahme, die durch die aktuelle Ausnahme eingeholt wird. (Kann als Ursache der Ausnahme bezeichnet werden)
Beim Drucken der Ausnahmestapelspur wird der Ausnahmestapel der ursprünglichen Ausnahme rekursiv gedruckt.
Lassen Sie uns nun die Throwable.printstacktrace () -Methode analysieren.
Inside Throwable.printstacktrace (printstreamorwriter s) können wir sehen:
Beim Drucken des Ausnahmestapels wird der Ausnahmestapel des aktuellen Ausnahmebobjekts zuerst gedruckt.
Drucken Sie dann die Kette der Ursachen der Ausnahme. (Druckt rekursiv den Ausnahmestapel der ursprünglichen Ausnahme)
Synchronized (S.Lock ()) {// Drucken Sie unsere Stapelverfolgung // 1. Drucken Sie zuerst den Ausnahmestapel des aktuellen Ausnahmeobjekts dies. S.println (dies); StackTraceElement [] Trace = getourstacktrace (); für (StacktraceElement TraceElement: Trace) s.println ("/tat" + TraceElement); // Unterdrückte Ausnahmen, falls vorhanden für (Throwable SE: GetSuppressed ()) SE.PrintsClesedStacktrace (S, Trace, Suppressed_Caption, "/t", Dejavu); // drucken Ursache, falls vorhanden // 2. drucken Ursache uscause = getCause (); if (Ourcause! = null) orcause }Java erhält Ausnahmestapelinformationen
Methode 1:
public static String getStackTrace (Throwable T) {StringWriter SW = New StringWriter (); Pressewriter PW = New Printwriter (SW); try {t.printstacktrace (pw); return sw.tostring (); } endlich {pw.close (); }}Methode 2:
org.apache.commons.lang3.exception.Exceptionutils.getStacktrace (e);