package org.mapfish.print; /** * Util class for exception handling. */ public final class ExceptionUtils { private ExceptionUtils() { } /** * Returns a {@link RuntimeException} for the given exception. * * @param exc An exception. * @return A {@link RuntimeException} */ public static RuntimeException getRuntimeException(final Throwable exc) { Throwable e = exc; while (e.getCause() instanceof RuntimeException) { e = e.getCause(); } if (e instanceof RuntimeException) { return (RuntimeException) e; } else { return new RuntimeException(exc); } } /** * Because exceptions might get re-thrown several times, an error message like * "java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: java.lang.IllegalArgumentException: ..." * might get created. To avoid this, this method finds the root cause, so that only a message like * "java.lang.IllegalArgumentException: ..." is shown. * * @param e A throwable. * @return root Throwable */ public static Throwable getRootCause(final Throwable e) { Throwable rootCause = e; while (rootCause.getCause() != null && rootCause.getCause() != rootCause) { rootCause = rootCause.getCause(); } return rootCause; } }