方法调用栈
方法调用栈,在Java 中可以通过两种方法获取到方法调用栈的信息
- (new Throwable()).getStackTrace()
- Thread.currentThread().getStackTrace()
这两种方式都能返回一个 StackTraceElement 数组,StackTraceElement 对象中包含了类名、方法名、文件名、代码行号这样的信息。
区别
(new Throwable()).getStackTrace()调用native StackTraceElement getStackTraceElement(int index);
Thread.currentThread().getStackTrace()调用return (new Exception()).getStackTrace();
- 也就是说第一张方式比第二种少一个层级
- 获取上级调用者
- (new Throwable()).getStackTrace()[
1
] - Thread.currentThread().getStackTrace()[
2
]
- (new Throwable()).getStackTrace()[
示例
1 | package com.okada.go; |