获取当前函数对应的调用链

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);
    }
}
调试结果图: 调试结果图
上一篇下一篇

猜你喜欢

热点阅读