StackTrace?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

ich habe eine Funktion ausgabe, die einfach nur ein System.out.println macht. Diese Funktion wird von zahlreichen anderen Funktionen aufgerufen. Jetzt möchte ich in die Konsole neben dem auszugebenen String auch die Funktion schreiben von der aus die Ausgabe aufgerufen wurde. Bei einer Exception kann ich ja den SteckTrace ausgeben. Genau das gleiche möchte ich jetzt machen nur eben ohne Exception.

Geht das?

THX
 
S

SlaterB

Gast
Code:
public class Test {

	public static void main(String[] args) throws Exception {

		System.out.println(getQuelle(2));
	}

	public static String getQuelle(int tiefe) {
		StackTraceElement[] sT = Thread.currentThread().getStackTrace();
		if (sT.length <= tiefe) {
			return "-";
		}
		StackTraceElement sE = sT[tiefe];
		String s = sE.getClassName() + ".";
		s += sE.getMethodName();
		s += " " + sE.getLineNumber();
		return s;
	}
}
 
G

Guest

Gast
Klar, lese es aus dem aktuellen Thread oder erstelle eine Exception und lese daraus das Stacktrace.
Code:
// StackTraceElement stackTrace[] = Thread.currentThread().getStackTrace(); // Erstes Element ist die Methode getStackTrace()
StackTraceElement stackTrace[] = new Exception().getStackTrace(); // Erstes Element ist die aktuelle Methode
for(StackTraceElement stackTraceElement : stackTrace) {
   System.out.println(stackTraceElement.getMethodName());
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben