我知道stacktraces可以用来检索当前执行的方法,如下所示:
Thread.currentThread().getStackTrace()[what you want]
然而,并非每个JVM都提供此堆栈跟踪,因此获取方法名称的方式非常不可靠。 无论如何......例外呢?我需要记录调用方法名称,为了提供一些代码维护,我想避免像这样写下这个名字:
public void myMethod(){
...
}catch(anException ex){
log.error("myMethod failed!");
}
但更像是:
}catch(anException ex){
log.error("{} failed!", ex.getStackTrace()[0].getMethodName()); //0 should be my method, the caller
}
这可靠吗?我认为,至少在例外情况下,应该期望JVM提供所述堆栈跟踪......