public class MyTest {
public static void main(String args[]) {
new MyTest().doit();
}
public void doit() {
System.out.println
(new Exception().getStackTrace()[0].getMethodName());
}
}
JDK1.5, a new technique is available.
public class Test {
public static void main(String args[]) {
trace(Thread.currentThread().getStackTrace());
new Test().doit();
trace(Thread.currentThread().getStackTrace());
}
public void doit() {
trace(Thread.currentThread().getStackTrace());
doitagain();
}
public void doitagain() {
trace(Thread.currentThread().getStackTrace());
}
public static void trace(StackTraceElement e[]) {
boolean doNext = false;
for (StackTraceElement s : e) {
if (doNext) {
System.out.println(s.getMethodName());
return;
}
doNext = s.getMethodName().equals("getStackTrace");
}
}
}
main doit doitagain main
参考: http://www.rgagnon.com/javadetails/java-0420.html
本文提供了一个使用Java获取堆栈跟踪的示例,通过不同的方法调用展示如何获取当前线程的堆栈跟踪信息,并打印出具体的方法名。
249

被折叠的 条评论
为什么被折叠?



