zoukankan      html  css  js  c++  java
  • getStackTrace()方法使用

    参考文章:https://blog.csdn.net/lovequanquqn/article/details/81585991  

    StackTrace(堆栈轨迹)存放的就是方法调用栈的信息,每次调用一个方法会产生一个方法栈,当前方法调用另外一个方法时会使用栈将当前方法的现场信息保存在此方法栈当中,获取这个栈就可以得到方法调用的详细过程。例如:异常处理中常用的e.printStackTrace()实质就是打印异常调用的堆栈信息。

    获取StackTraceElement(StackTraceElement是StackTrace(堆栈轨迹)中的一个方法对象)的方法有两种,均返回StackTraceElement数组,也就是这个栈的信息:  

    getStackTrace()方法

    //获取到堆栈轨迹的两种方法
    Thread.currentThread().getStackTrace()
    
    
    new Throwable().getStackTrace() 

    分别进行实际验证一下:

    public static void main(String[] args) {
            add();
            testStackTraceElements();
            testThrowNewElement();
        }
    
        public static void add() {
            System.out.println("准备测试");
        }
    
        public static void testStackTraceElements() {
            System.out.println("-----------------");
            StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
            for (int i = 0; i < stackTraceElements.length; i++) {
                System.out.println(stackTraceElements[i]);
    
            }
        }
    
        public static void testThrowNewElement() {
            System.out.println("----------------------");
            StackTraceElement[] testThrows = new Throwable().getStackTrace();
            for (int i = 0; i < testThrows.length; i++) {
                System.out.println(testThrows[i].getClassName());
                System.out.println(testThrows[i].getFileName());
                System.out.println(testThrows[i].getLineNumber());
                System.out.println(testThrows[i].getMethodName());
    
    
            }
        }

    可以看到每一个StackTraceElement元素都有获取类名、文件名、所在行数及方法名具体的get方法。

    结果如下,【在日志中,getStackTrace()方法还是比较常用的。】

  • 相关阅读:
    常见常用的CSS
    Js删除数组函数
    使用CSS让多出来的字变为省略号
    CSS缩写的样式
    mac下安装nginx
    ubuntu下程序员常用命令大全
    vue.js实现瀑布流之vue-waterfall-easy
    vue.js常见的报错信息及其解决方法的记录
    laravel5.4生成验证码
    java算法之超级丑数
  • 原文地址:https://www.cnblogs.com/levontor/p/13431604.html
Copyright © 2011-2022 走看看