zoukankan      html  css  js  c++  java
  • java 中打印调用栈

    source-code:
    public class A {
    public A() {}
    private static void printStackTrace() {
            StackTraceElement[] stackElements = new Throwable().getStackTrace();
            if(stackElements != null)
            {
                for(int i = 0; i < stackElements.length; i++)
                {
                    System.out.println(""+ stackElements[i]); 
                }
            }
        }
     
        public void methodA() { methodB(); }
        public void methodB() { printStackTrace();}    
        
        public static void main(String[] argv) {
          A a = new A();
          a.methodA();
        }
      }
     
    output:
    A.printStackTrace(A.java:5)
    A.methodB(A.java:16)
    A.methodA(A.java:15)
    A.main(A.java:20)
     
    Note:
    StackTraceElement.java
        public String toString() {
            return getClassName() + "." + methodName +
                (isNativeMethod() ? "(Native Method)" :
                 (fileName != null && lineNumber >= 0 ?
                  "(" + fileName + ":" + lineNumber + ")" :
                  (fileName != null ?  "("+fileName+")" : "(Unknown Source)")));
        }
    另外下面这些方法也可以:
    new Exception("hello").printStackTrace();
    Thread.getStackTrace()/Thread.getAllStackTraces() since jdk 1.5
    Thread.currentThread().dumpStack()
  • 相关阅读:
    0626 Django模型(ORM)
    0625 Django 基础
    0530JavaScript基础2
    CentOS7.5安装cairo-dock,比mac托盘还美
    CentOS7.5安装与使用mysql-workbench
    CentOS7.6安装rime輸入法
    CentOS7.5 firefox Flash插件更新
    记一次ceph集群的严重故障
    ceph笔记(一)
    CentOS7.6打开的程序窗口居中
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/5902428.html
Copyright © 2011-2022 走看看