localhost-back/src/main/java/io/company/localhost/utils/ExceptionUtil.java

65 lines
1.6 KiB
Java

/************************************************************
*
* @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);
}
}