getStackTrace()
包java.lang.Thread.getStackTrace()中提供了此方法。
此方法用于返回表示线程的堆栈转储的堆栈跟踪元素数组。
此方法不是静态的,因此该方法可通过Thread类对象访问,而无法通过类名称访问。
此方法返回一个堆栈跟踪元素数组,并且堆栈在堆栈的顶部和底部具有两个术语。堆栈的顶部包含在层次结构或序列中的最后一个调用的方法,堆栈的底部包含在层次结构或序列中的第一个调用的方法。
此方法的返回类型为StackTraceElement [],因此它返回一个堆栈跟踪元素数组。
如果不允许checkPermission方法获取堆栈跟踪元素,则此方法引发异常。
语法:
StackTraceElement[] getStackTrace(){ }
参数:
在Thread方法中,我们不传递任何对象作为参数。
返回值:
此方法的返回类型为StackTraceElement [],它返回一个堆栈跟踪元素数组,每个堆栈元素表示一个堆栈帧。
getStackTrace()
方法示例/* We will use Thread class methods so we are importing the package but it is not mandate because it is imported by default */ import java.lang.Thread; class GetStackTrace { public static void main(String[] args) { //调用main1()方法 //然后此方法将首先调用 main1(); } public static void main1() { //我们从main1()方法调用main2()方法,然后 //之后调用 //[即此方法main2()在第二个位置 main2(); } public static void main2() { //我们从main2()方法调用main3()方法,然后 //该方法将在第二个方法main2()之后调用 //[即此方法main3()将在第三个位置调用 main3(); } public static void main3() { //为堆栈跟踪元素创建参考 StackTraceElement[] ste = Thread.currentThread().getStackTrace(); System.out.println("We are using for loop to display stack trace elements"); for (StackTraceElement stack_tra_ele: ste) System.out.println(stack_tra_ele); } }
输出结果
E:\Programs>javac GetStackTrace.java E:\Programs>java GetStackTrace We are using for loop to display stack trace elements java.lang.Thread.getStackTrace(Thread.java:1589) GetStackTrace.main3(GetStackTrace.java:29) GetStackTrace.main2(GetStackTrace.java:22) GetStackTrace.main1(GetStackTrace.java:15) GetStackTrace.main(GetStackTrace.java:7)