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 *///:~