private static void renderThrowableInfo( StringBuilder sb, ThrowableInfo throwableInfo, int depth) { int padding = depth + 1; pad(sb, padding); sb.append(throwableInfo.getClassName()); sb.append("<br>\n"); for (StackTraceElement element : throwableInfo.getStackTrace()) { pad(sb, padding); sb.append(element); sb.append("<br>\n"); } Optional<ThrowableInfo> cause = throwableInfo.getCause(); if (cause.isPresent()) { pad(sb, padding); sb.append("Caused by:<br>\n"); renderThrowableInfo(sb, cause.get(), depth + 1); } }