core/src/main/java/net/typedrest/ThrowableUtils.java
@SuppressWarnings("ThrowableResultIgnored")
    public static String getFullMessage(Throwable throwable) {
        StringBuilder builder = new StringBuilder();
        do {
            builder.append(throwable.getLocalizedMessage()).append("\n");
            throwable = throwable.getCause();
        } while (throwable != null);
        return builder.toString();
    }
@SuppressWarnings("ThrowableResultIgnored")
    public static String getFullMessage(Throwable throwable) {
        StringBuilder builder = new StringBuilder();
        do {
            builder.append(throwable.getLocalizedMessage()).append("\n");
            throwable = throwable.getCause();
        } while (throwable != null);
        return builder.toString();
    }
@ SuppressWarnings ( "ThrowableResultIgnored" ) public static String getFullMessage ( Throwable throwable ) { StringBuilder builder = new StringBuilder ( ) ; do { builder . append ( throwable . getLocalizedMessage ( ) ) . append ( "\n" ) ; throwable = throwable . getCause ( ) ; } while ( throwable != null ) ; return builder . toString ( ) ; }
Concatenates the {@link Throwable#getLocalizedMessage()}s of the entire
{@link Throwable#getCause()} tree.

@param throwable The top-level throwable to walk for messages.
@return A newline separated list of messages.
Concatenates the { @link Throwable#getLocalizedMessage () } s of the entire { @link Throwable#getCause () } tree .