Skip to content

Instantly share code, notes, and snippets.

@gunlee01
Created August 3, 2020 00:06
Show Gist options
  • Save gunlee01/fce0a75cac79b1424aaee077d242b1ec to your computer and use it in GitHub Desktop.
Save gunlee01/fce0a75cac79b1424aaee077d242b1ec to your computer and use it in GitHub Desktop.
Throwable2
public class Throwable2 extends Throwable {
public Throwable2() {
}
public List<StackTraceElement> stacks(int req) {
List<StackTraceElement> stacks = new ArrayList<>();
try {
Method getStackTraceDepth = Throwable.class.getDeclaredMethod("getStackTraceDepth");
getStackTraceDepth.setAccessible(true);
Method getStackTraceElement = Throwable.class.getDeclaredMethod("getStackTraceElement", int.class);
getStackTraceElement.setAccessible(true);
int depth = (int) getStackTraceDepth.invoke(this);
int reqMax = Math.min(req, depth);
for (int i = 0; i <reqMax; i++) {
stacks.add((StackTraceElement) getStackTraceElement.invoke(this, i));
}
} catch (Exception e) {
e.printStackTrace();
}
return stacks;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment