Ну, вы можете немного улучшить его, не исключив при этом исключение.
Exception ex = new Exception();
ex.fillInStackTrace();
StackTraceElement[] cause = ex.getStackTrace();
На самом деле, я только что проверил: конструктор уже называет fillInStackTrace()
. Поэтому вы можете упростить его:
StackTraceElement[] cause = new Exception().getStackTrace();
Это на самом деле то, что Thread.getStackTrace()
делает, если он вызывается в текущем потоке, поэтому вы можете предпочесть его использовать.