/************************************************************ * * @packageName : io.company.localhost.utils * @fileName : ExceptionUtil.java * @author : 조인제 * @date : 24.12.06 * @description : * * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- * 24.12.06 조인제 최초 생성 * *************************************************************/ package io.company.localhost.utils; import lombok.experimental.UtilityClass; import java.io.PrintWriter; import java.io.StringWriter; import java.util.Objects; // try-catch 시 error 메시지 처리용 // System.out.println(ExceptionUtil.messageTrace(t)); 등등 @UtilityClass public class ExceptionUtil { private static final String delimiter = ": "; public static String stackTrace(Throwable t) { StringWriter out = new StringWriter(); try (PrintWriter w = new PrintWriter(out)) { t.printStackTrace(w); } return out.toString(); } public static String messageTrace(Throwable t) { if (Objects.isNull(t)) { return null; } StringBuilder sb = new StringBuilder(); sb.append(t.getClass().getName()).append(delimiter).append(t.getMessage()); messageTrace(t.getCause(), sb, 4); return sb.toString(); } private static void messageTrace(Throwable t, StringBuilder sb, int remaining) { if (Objects.isNull(t)) { return; } sb.append('\n').append(t.getClass().getName()).append(delimiter).append(t.getMessage()); if (remaining == 1) { return; } messageTrace(t.getCause(), sb, --remaining); } }