Thread
类的getStackTrace()
方法返回表示线程堆栈转储的堆栈跟踪元素数组。 数组的第一个元素表示堆栈的顶部,这是序列中的最后一个方法调用。 数组的最后一个元素表示堆栈的底部,这是序列中的第一个方法调用。
语法
public StackTraceElement[] getStackTrace()
返回
它返回一个StackTraceElement
对象数组,每个都代表一个堆栈帧。
异常
SecurityException
:如果存在安全管理器且其checkPermission
方法不允许获取线程的堆栈跟踪,则抛出此异常。
示例
public class JavaGetStackTraceExp
{
public static void main(String args[])
{
first();
}
public static void first()
{
second();
}
public static void second()
{
third();
}
public static void third()
{
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
System.out.println("Displaying Stack trace using StackTraceElement in Java");
for(StackTraceElement st : stackTrace)
{
// print the stack trace
System.out.println(st);
}
}
}
执行上面示例代码,得到以下结果:
Displaying Stack trace using StackTraceElement in Java
java.lang.Thread.getStackTrace(Thread.java:1559)
JavaGetStackTraceExp.third(JavaGetStackTraceExp.java:17)
JavaGetStackTraceExp.second(JavaGetStackTraceExp.java:13)
JavaGetStackTraceExp.first(JavaGetStackTraceExp.java:9)
JavaGetStackTraceExp.main(JavaGetStackTraceExp.java:5)