65 lines
1.6 KiB
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);
|
|
}
|
|
|
|
}
|