1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2025-03-01 01:06:11 +00:00

Get stack trace string

This commit is contained in:
M66B 2023-12-14 21:40:19 +01:00
parent 146b8c12e7
commit d6b0ded332

View file

@ -67,7 +67,38 @@ public class ThrowableWrapper extends Throwable {
}
public String getSafeStackTraceString() {
return jni_get_safe_stack_trace_string(ex);
StringBuilder sb = new StringBuilder();
StackTraceElement[] stack = ex.getStackTrace();
for (StackTraceElement traceElement : stack)
sb.append("\tat ").append(traceElement).append('\n');
Throwable cause = ex.getCause();
StackTraceElement[] enclosing = stack;
while (cause != null) {
sb.append("Caused by: ").append('\n');
stack = cause.getStackTrace();
int m = stack.length - 1;
int n = enclosing.length - 1;
while (m >= 0 && n >= 0 && stack[m].equals(enclosing[n])) {
m--;
n--;
}
int common = stack.length - 1 - m;
for (int i = 0; i <= m; i++)
sb.append("\tat ").append(stack[i]).append('\n');
if (common != 0)
sb.append("\t... ").append(common).append(" more").append('\n');
enclosing = stack;
cause = cause.getCause();
}
return sb.toString(); //jni_get_safe_stack_trace_string(ex);
}
public String toSafeString() {