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()
  • 相关阅读:
    VirtualBox 创建com对象失败
    大数据(十)
    HITCON 2014 已開始征求投稿计划书
    CSS
    工具
    工具
    Linux
    Python
    JavaScript
    JavaScript
  • 原文地址:https://www.cnblogs.com/qiumingcheng/p/5902428.html
Copyright © 2011-2022 走看看