Alex Rivera | Logout

Determining Current Call Stack (For Diagnostic Purposes)

Asked 2009-04-01T16:12:42.960
57

For diagnostic purposes I sometimes need to store the call stack that lead to a given state transition (such as granting a lock, committing a transaction, etc.) so that when something goes wrong later I can find out who originally triggered the state transition.

Currently, the only way I am aware of to retrieve the call stack looks like the following code snippet, which I consider terribly ugly:

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

Does somebody know of a better way to accomplish this?

Edit
Report

1 Answer

106

I think you can get the same thing with:

StackTraceElement[] cause = Thread.currentThread().getStackTrace();
answered 2009-04-01T16:17:32.667

Your Answer