package codeine.utils; import java.io.PrintWriter; import java.io.StringWriter; public class ExceptionUtils { public static RuntimeException asUnchecked(Throwable t) { if (t instanceof RuntimeException) { return (RuntimeException)t; } else if (t instanceof Error) { throw (Error)t; } else { return new RuntimeException("wrapped exception - check cause for details, message from cause:" + t.getMessage(), t); } } public static Throwable getRootCause(Throwable t) { Throwable $ = t; while ($.getCause() != null && $.getCause() != $) { $ = $.getCause(); } return $; } public static String getStackTrace(Throwable t) { StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); t.printStackTrace(pw); return sw.toString(); // stack trace as a string } public static String getRootCauseMessage(Throwable t) { return getRootCause(t).getMessage(); } }