获取当前函数对应的调用链
2018-10-26 本文已影响0人
瑜骐
通过Thread.getStackTrace()方法
方法说明
public StackTraceElement[] getStackTrace()
此方法返回StackTraceElement数组,每个元素代表一个堆栈帧。
例子代码:
package com.yiibai;
import java.lang.*;
public class ThreadDemo {
public static void main(String[] args) {
function();
}
public static void function(){
new ThreadDemo().function2();
}
public void function2() {
System.out.println(Thread.currentThread().getStackTrace()[3].
getClassName()); // 输出结果为ThreadDemo
}
}
通过Exception.getStackTrace()方法
在当前方法中新建一个异常对象,然后根据这个异常对应的方法getStackTrace来获取对应的调用堆栈,对应的代码如下:
public class TestException {
public static void main(String[] args) {
test();
}
public static void test(){
Exception exception = new Exception("test");
StackTraceElement[] stackTraceElements = exception.getStackTrace();
System.out.println(stackTraceElements);
}
}
调试结果图:
调试结果图