54

診断の目的で、特定の状態遷移 (ロックの許可、トランザクションのコミットなど) につながるコール スタックを保存する必要がある場合があります。これにより、後で何か問題が発生した場合に、状態遷移を最初にトリガーしたのは誰かを見つけることができます。

現在、コール スタックを取得する唯一の方法は、次のコード スニペットのように見えますが、これは非常に見苦しいと思います。

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

誰かがこれを達成するためのより良い方法を知っていますか?

4

4 に答える 4

102

私はあなたが同じことを得ることができると思います:

StackTraceElement[] cause = Thread.currentThread().getStackTrace();
于 2009-04-01T16:17:32.667 に答える
3

文字列として使用し、Apache Commons を使用する場合:

org.apache.commons.lang.exception.ExceptionUtils.getFullStackTrace(new Throwable())
于 2015-05-22T12:58:58.707 に答える