出于诊断目的,有时我需要存储导致给定状态转换的调用堆栈(例如,授予锁,提交事务等),以便以后出现问题时,我可以找出最初触发状态转换的人员。

当前,我知道的唯一检索调用堆栈的方法看起来像以下代码片段,我认为这非常丑陋:

StackTraceElement[] cause;
try {
  throw new Exception();
} catch (Exception e) {
  cause = e.getStackTrace();
}

有人知道实现此目标的更好方法吗?

最佳答案

我认为您可以通过以下方式获得相同的结果:

StackTraceElement[] cause = Thread.currentThread().getStackTrace();

09-08 02:51