zoukankan      html  css  js  c++  java
  • java中关于StackTraceElement的使用

    实际项目中有时候我们需要知道在执行某个方法时,它之前的调用链咋样的,尤其是涉及到多线程时,我们需要知道某个方法到底有没有被调用,除了常用的打印日志外,还可以使用StackTraceElement,talk is cheap ,show the code.

    public class Test {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    new A().TestA();
    }
    public void TestInvoke(){
    StackTraceElement[] mStacks = Thread.currentThread().getStackTrace();
    for(StackTraceElement s: mStacks){
    System.out.println("方法名:"+s.getMethodName()+
    "类名:"+s.getClassName()+"行数:"+s.getLineNumber()+"文件名:"+s.getFileName()+"----"+s);
    }
    }

    }
    class A {
    public void TestA(){
    new B().TestB();
    };

    }
    class B {
    public void TestB(){
    new Test().TestInvoke();
    };
    }

    打印如下:是不是很简单:

     有没有感觉到很像一般的异常抛出啊,其实是对的,Exception中的printStackTrace()最终调用的是Throwable中的getOurStackTrace(),返回的也是StackTraceElement数组

  • 相关阅读:
    C语言 va_start 宏
    C语言 strcat_s 函数
    C语言 strcat 函数
    C语言 memcpy_s 函数
    C语言 memcpy 函数
    C语言 strcpy_s 函数
    C语言 strcpy 函数
    C语言 sizeof 函数
    c++实现扫雷游戏 初学
    .Net vs .Net Core,我该如何选择?看这一篇文章就够了
  • 原文地址:https://www.cnblogs.com/sharkli/p/5541445.html
Copyright © 2011-2022 走看看