java 轨迹栈

printStackTrace()方法所提供的信息可以通过getStackTrace()方法直接访问.

getStackTrace()方法返回一个由根轨迹中的元素所构成的数组,每一个元素都表示栈中的一帧,元素0是栈顶元素,并且是调用序列总的最后一个方法调用,数组中最后一个元素和栈底元素是调用序列中的第一个方法调用

异常对象是用 new在堆上创建的,所以垃圾回收器会自动回收

package exceptions;
//: exceptions/WhoCalled.java
// Programmatic access to stack trace information.

public class WhoCalled {
  static void f() {
    // Generate an exception to fill in the stack trace
    try {
      throw new Exception();
    } catch (Exception e) {
      for(StackTraceElement ste : e.getStackTrace())
        System.out.println(ste.getMethodName());//直接System.out.println(ste}可以显示更详细信息
  static void g() { f(); }
  static void h() { g(); }
  public static void main(String[] args) {
    f();
    System.out.println("--------------------------------");
    g();
    System.out.println("--------------------------------");
    h();
  }
} /* Output:
f
main
--------------------------------
f
g
main
--------------------------------
f
g
h
main
*///:~

 

posted @ 2019-01-20 21:56  江期玉  阅读(272)  评论(0编辑  收藏  举报