利用StackTrace堆栈轨迹获取某个时间的调用堆栈状态。

 package com.dsp.demo;

 public class TechDemo {

     public static void main(String[] args) {
System.out.println("Hello dsp!"); System.out.printf("%x\n", 2129); aMethod();
} private static String getExecutingMethodName() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stackTrace[2];
return e.getMethodName();
} private static void aMethod() {
System.out.println("######### aMethod #########");
//String executingMethodName = Thread.currentThread().getStackTrace()[2].getMethodName();
String executingMethodName = getExecutingMethodName();
System.out.println(executingMethodName);
String className = Thread.currentThread().getStackTrace()[2].getClassName();
System.out.println(className);
String fileName = Thread.currentThread().getStackTrace()[2].getFileName();
System.out.println(fileName);
System.out.println("******** aMethod ******"); bMethod();
} private static void bMethod() {
System.out.println("######### bMethod #########");
// String executingMethodName = Thread.currentThread().getStackTrace()[2].getMethodName();
String executingMethodName = getExecutingMethodName();
System.out.println(executingMethodName);
String className = Thread.currentThread().getStackTrace()[2].getClassName();
System.out.println(className);
String fileName = Thread.currentThread().getStackTrace()[2].getFileName();
System.out.println(fileName);
System.out.println("******** bMethod ******"); cMethod();
} private static void cMethod() {
System.out.println("######### cMethod #########");
String executingMethodName = getExecutingMethodName();
System.out.println(executingMethodName);
String className = Thread.currentThread().getStackTrace()[2].getClassName();
System.out.println(className);
String fileName = Thread.currentThread().getStackTrace()[2].getFileName();
System.out.println(fileName); saveA();
updateB(); System.out.println("******** cMethod ******");
} public static void saveA() {
System.out.println("######### saveA #########");
// ###
String executingMethodName = getExecutingMethodName();
System.out.println(executingMethodName); // ###
String name = new Object(){}.getClass().getEnclosingMethod().getName();
System.out.println(name);
System.out.println("******** saveA ******");
} public static void updateB() {
System.out.println("######### updateB #########");
String executingMethodName = getExecutingMethodName();
System.out.println(executingMethodName);
System.out.println("******** updateB ******");
} }

执行结果:

Hello dsp!
851
######### aMethod #########
aMethod
com.dsp.demo.TechDemo
TechDemo.java
******** aMethod ******
######### bMethod #########
bMethod
com.dsp.demo.TechDemo
TechDemo.java
******** bMethod ******
######### cMethod #########
cMethod
com.dsp.demo.TechDemo
TechDemo.java
######### saveA #########
saveA
saveA
******** saveA ******
######### updateB #########
updateB
******** updateB ******
******** cMethod ******

另附:

Stack Trace - 百度百科

Java异常的栈轨迹(Stack Trace)

使用Stacktrace处理异常

Java获取正在执行的函数名的更多相关文章

  1. C#获得当前执行的函数名、当前代码行、源代码文件名

    http://blog.csdn.net/newegg2009/article/details/6220385 C#获得当前执行的函数名.当前代码行.源代码文件名 [日期:2010-10-18 11: ...

  2. Java: 获取当前执行位置的文件名/类名/方法名/行号

    在 JAVA 程序有时需要获取当前代码位置, 于是就利用 Thread.currentThread().getStackTrace() 写了下面这个工具类, 用来获取当前执行位置处代码的文件名/类名/ ...

  3. PHP获取当前类名、函数名、方法名

    PHP获取当前类名.方法名  __CLASS__ 获取当前类名  __FUNCTION__ 当前函数名(confirm)  __METHOD__ 当前方法名 (bankcard::confirm) _ ...

  4. PHP获取类名及所有函数名

    PHP获取当前类名.方法名  __CLASS__ 获取当前类名  __FUNCTION__ 当前函数名(confirm)  __METHOD__ 当前方法名 (bankcard::confirm) _ ...

  5. Java获取多线程执行结果方式的归纳与总结

    在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结. 一.Thread.join 在一些简单的应 ...

  6. java 获取 正在执行的方法名

    //获取调用该方法的方法名.... String method = Thread.currentThread().getStackTrace()[2].getMethodName(); //获取正在执 ...

  7. java获取当前执行文件的路径

    需要知道执行jar包时,jar包所在的路径. 开始使用了 p.getClass().getResource("/").getPath(); 结果在IDE里面使用是好的,但是在命令行 ...

  8. 【Python】动态获取python类名、函数名&多线程

    import time import random import threading import inspect def get_current_function_name(): return in ...

  9. Python学习总结11:获取当前运行类名和函数名

    一. 使用内置方法和修饰器方法获取类名.函数名 1. 外部获取 从外部的情况好获取,可以使用指向函数的对象,然后用__name__属性. def a(): pass a.__name__ 或者 get ...

随机推荐

  1. grpc-golang实现账号and密码认证

    // I would recommend to use interceptors: // client grpc.Dial(target, grpc.WithPerRPCCredentials(&am ...

  2. Eclipse GBK批量转UTF-8插件

    最近需要把Android项目转Android Studio,由于之前是eclipse开发,而且坑爹的是编码还是GBK的,转到Android Studio中文都是乱码,如果一个文件一个文件ctrl+c的 ...

  3. 监听的instance status blocked分析

    对于处于NOMOUNT状态的数据库,PMON还没有将服务注册到监听上,这个时候服务的状态是BLOCKED的,对于来自远程的任何连接都会报ORA-12528错误.如下: [oracle@dbtest ~ ...

  4. 【神经网络】BP反向传播神经网络

    BP算法细节 参数说明:假设有n层.J表示代价函数,和上面的E是同样的意思,只不过用不同的字母写而已. 分析:要想知道第l层的第i个结点的残差,必须知道层已经计算出来了残差,你只要把后面一层的每个结点 ...

  5. Android 开发自己的网络收音机4——读取XML文件的电台数据

    国内外的电台数据很多,起码有好几百,所以把这些数据都写到代码里面是不实际的.只能写成一个数据文件,程序启动的时候再去加载.保存这些简单数据,我们肯定会优先使用XML文件,今天讲讲如何读取XML里面的数 ...

  6. docker探索-docker私有仓库搭建(九)

    前言 本文讲解搭建docker的私有仓库,和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库 一.环境 ip 主机名 操作系统 角色 19 ...

  7. MEMCACHE分布式算法(PHP)

    //测试分布式算法 $ports = array('端口1', '端口2', '端口3', '端口4', '端口5'); //Memcache端口 $users = array('1000', '10 ...

  8. 9g10在nandflash扇区的分配地址

  9. face alignment---各种算法框架

    [深度学习]最新的一些开源face alignment及评价 转载  2017年01月12日 11:33:39 2047 dlib :https://github.com/davisking/dlib ...

  10. UI设计,使用感知分层技术

    页面设计时使用感知分层技术:不同的元素用不同的颜色表示,让它看起来是位于独立的一层之上.人们在无意识的状态下,只会感知到自己关注的元素,将其他元素排除在意识之外.