标签:style blog http java color 使用
1.获取当前方法堆栈,我们一般用
StackTraceElement[] stes = Thread.currentThread().getStackTrace();
想要获取当前方法,切记不够灵活,使用数组stes的固定index(网上不少是这样说的,请明辨之)。
让我们来看api怎么说的吧?
public StackTraceElement[] getStackTrace()
如果有安全管理器,并且该线程不是当前线程,则通过 RuntimePermission("getStackTrace") 权限调用安全管理器的 checkPermission 方法,查看是否可以获取堆栈跟踪。
某些虚拟机在某些情况下可能会从堆栈跟踪中省略一个或多个堆栈帧。在极端情况下,没有该线程堆栈跟踪信息的虚拟机可以从该方法返回一个零长度数组。
SecurityException
- 如果安全管理器存在,并且其 checkPermission 方法不允许获取线程的堆栈跟踪。SecurityManager.checkPermission(java.security.Permission)
, RuntimePermission
, Throwable.getStackTrace()
注意,红色标注的地方,栈顶是最新的方法调用,栈底是最旧的方法调用
2. 实例:
/*TestDumpThread .java*/ public class TestDumpThread { //Dump the current thread stack trace. public static void getCurrentStackTrace() { StackTraceElement[] stes = Thread.currentThread().getStackTrace(); for (StackTraceElement element : stes) { System.out.println(element); } } public static void main(String[] args) { getCurrentStackTrace(); } }
结果如下:
java.lang.Thread.getStackTrace(Thread.java:1479) TestDumpThread.getCurrentStackTrace(TestDumpThread.java:5) TestDumpThread.main(TestDumpThread.java:12)
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/davidwang456/p/3836523.html