上QQ阅读APP看书,第一时间看更新
1.7 方法StackTraceElement[] getStackTrace()
public StackTraceElement[] getStackTrace()方法的作用是返回一个表示该线程的堆栈跟踪元素数组。如果该线程尚未启动或已经终止,则该方法将返回一个零长度数组。如果返回的数组不是零长度的,则其第一个元素代表堆栈顶,它是该数组中最新的方法调用。最后一个元素代表堆栈底,是该数组中最旧的方法调用。
创建测试用的代码如下:
package test1; public class Test1 { public void a() { b(); } public void b() { c(); } public void c() { d(); } public void d() { e(); } public void e() { StackTraceElement[] array = Thread.currentThread().getStackTrace(); if (array != null) { for (int i = 0; i < array.length; i++) { StackTraceElement eachElement = array[i]; System.out.println("className=" + eachElement.getClassName() + " methodName=" + eachElement.getMethodName() + " fileName=" + eachElement. getFileName() + " lineNumber=" + eachElement.getLineNumber()); } } } public static void main(String[] args) { Test1 test1 = new Test1(); test1.a(); } }
程序运行结果如下所示。
className=java.lang.Thread methodName=getStackTrace fileName=Thread.java lineNumber=1559 className=test1.Test1 methodName=e fileName=Test1.java lineNumber=22 className=test1.Test1 methodName=d fileName=Test1.java lineNumber=18 className=test1.Test1 methodName=c fileName=Test1.java lineNumber=14 className=test1.Test1 methodName=b fileName=Test1.java lineNumber=10 className=test1.Test1 methodName=a fileName=Test1.java lineNumber=6 className=test1.Test1 methodName=main fileName=Test1.java lineNumber=36
在控制台中输出当前线程的堆栈跟踪信息。
可以在catch{}代码块中使用public StackTraceElement[] getStackTrace()方法获得出现异常的堆栈调用顺序并记录日志,请自行进行测试。