lkd9125
8 months ago
7 changed files with 296 additions and 0 deletions
@ -0,0 +1,137 @@
|
||||
package kr.co.palnet.kac.app.exception; |
||||
|
||||
import java.util.Locale; |
||||
|
||||
import org.springframework.context.MessageSource; |
||||
|
||||
import lombok.extern.slf4j.Slf4j; |
||||
|
||||
@Slf4j |
||||
public class AppException extends RuntimeException { |
||||
|
||||
|
||||
private static final long serialVersionUID = 1L; |
||||
|
||||
private final Level level; |
||||
|
||||
private final Source source; |
||||
|
||||
private final ExceptionCode errorCode; |
||||
|
||||
|
||||
private final Object[] paramArray; |
||||
|
||||
private String sourceErrorCode; |
||||
|
||||
private String sourceErrorMessage; |
||||
|
||||
public AppException(Throwable th, Level level, Source source, ExceptionCode errorCode, Object... paramArray) { |
||||
super(th != null ? th.getMessage() : errorCode.message(), th); |
||||
this.level = level; |
||||
this.errorCode = errorCode; |
||||
this.source = source; |
||||
this.paramArray = paramArray; |
||||
this.sourceErrorCode = errorCode.code(); |
||||
this.sourceErrorMessage = errorCode.message(); |
||||
} |
||||
|
||||
public AppException(Throwable th, Level level, ExceptionCode errorCode, Object... paramArray) { |
||||
this(th, level, Source.INTERNAL, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(Throwable th, Source source, ExceptionCode errorCode, Object... paramArray) { |
||||
this(th, Level.WARN, source, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(Throwable th, ExceptionCode errorCode, Object... paramArray) { |
||||
this(th, Level.WARN, Source.INTERNAL, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(Level level, Source source, String errorCode, Object... paramArray) { |
||||
this(null, level, source, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(Level level, String errorCode, Object... paramArray) { |
||||
this(null, level, Source.INTERNAL, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(Source source, String errorCode, Object... paramArray) { |
||||
this(null, Level.WARN, source, errorCode, paramArray); |
||||
} |
||||
|
||||
public AppException(ExceptionCode errorCode, Object... paramArray) { |
||||
this(null, Level.WARN, Source.INTERNAL, errorCode, paramArray); |
||||
} |
||||
// public BaseException(String errorCode) {
|
||||
// this(errorCode, new Object());
|
||||
// }
|
||||
|
||||
public AppException(Throwable th, ExceptionCode erorCode, String sourceErrorMessage) { |
||||
this(th, Level.WARN, ExceptionCode.INTERNAL_SERVER_ERROR, (Object[])null); |
||||
this.sourceErrorCode = erorCode.code(); |
||||
this.sourceErrorMessage = errorCode.message(); |
||||
} |
||||
|
||||
public AppException(ExceptionCode sourceErrorCode, String sourceErrorMessage) { |
||||
this(null, sourceErrorCode, sourceErrorMessage); |
||||
} |
||||
|
||||
@Deprecated |
||||
public AppException(Throwable th, Level level, ExceptionCode errorCode, Source source, Object... paramArray) { |
||||
this(th, level, source, errorCode, paramArray); |
||||
} |
||||
|
||||
@Deprecated |
||||
public AppException(Level level, ExceptionCode errorCode, Source source, Object... paramArray) { |
||||
this(null, level, source, errorCode, paramArray); |
||||
} |
||||
|
||||
public String getCode() { |
||||
return errorCode.code(); |
||||
} |
||||
|
||||
public ExceptionCode getErrorCode(){ |
||||
return errorCode; |
||||
} |
||||
|
||||
public Object[] getParamArray() { |
||||
return paramArray; |
||||
} |
||||
|
||||
public Level getLevel() { |
||||
return level; |
||||
} |
||||
|
||||
public Source getSource() { |
||||
return source; |
||||
} |
||||
|
||||
public String getErrorMessage(MessageSource ms) { |
||||
if (ms == null) { |
||||
return ExceptionCode.INTERNAL_SERVER_ERROR.message(); |
||||
} |
||||
log.debug("############ getErrorMessage : {}",ms); |
||||
log.debug("############ getErrorCode : {}",getCode()); |
||||
log.debug("############ getParamArray : {}",getParamArray()); |
||||
log.debug("############ ErrorCode.NOT_REGIST_ERROR_CODE.message() : {}",ExceptionCode.NOT_REGIST_ERROR_CODE.message()); |
||||
log.debug("############ Locale.getDefault() : {}",Locale.getDefault()); |
||||
return ms.getMessage(getCode(), getParamArray(), ExceptionCode.NOT_REGIST_ERROR_CODE.message(), Locale.getDefault()); |
||||
} |
||||
|
||||
public String getSourceErrorCode() { |
||||
return sourceErrorCode; |
||||
} |
||||
|
||||
public void setSourceErrorCode(String sourceErrorCode) { |
||||
this.sourceErrorCode = sourceErrorCode; |
||||
} |
||||
|
||||
public String getSourceErrorMessage() { |
||||
return sourceErrorMessage; |
||||
} |
||||
|
||||
public void setSourceErrorMessage(String sourceErrorMessage) { |
||||
this.sourceErrorMessage = sourceErrorMessage; |
||||
} |
||||
|
||||
} |
@ -0,0 +1,61 @@
|
||||
package kr.co.palnet.kac.app.exception; |
||||
|
||||
|
||||
public enum ExceptionCode { |
||||
SUCCESS("1", 200, "성공"), |
||||
FAIL("-1" , 500, "실패"), |
||||
|
||||
CREATE_SUCCESS("HC201", 201, "성공"), |
||||
|
||||
NON_VALID_PARAMETER("VP001", 400, "파라미터가 유효하지 않습니다."), |
||||
INTERNAL_SERVER_ERROR("ER500", 500, "내부 시스템 오류"), |
||||
|
||||
NOT_REGIST_ERROR_CODE("ER501", 500, "등록되지 않은 오류 코드"), |
||||
|
||||
DATA_NOTFIND("DT001", 204,"데이터 를 찾을수 없습니다."), |
||||
DATA_DUPLICATE("DT002", 500, "중복 데이터가 존재합니다."), |
||||
DATA_NO("DT003", 500, "데이터 미존재"), |
||||
|
||||
ALREADY_CERT("CT001", 200, "이미 인증 되어있는 값 입니다."), |
||||
|
||||
DB_ERROR("DB001", 500, "디비 처리중 오류"), |
||||
|
||||
TIME_OUT("T001", 400, "인증 시간 초과"), |
||||
|
||||
FILE_ERROR("F001", 500, "파일 읽어오기 오류"), |
||||
FILE_PARSING_ERROR("F002", 500, "파일 파싱중 오류"), |
||||
|
||||
NOT_AUTHENTICATION_USER("P001", 400, "인증실패"), |
||||
NOT_AUTHORIZED_USER("P002", 401, "인가되지 않은 사용자"), |
||||
NOT_PERMISSION("P003", 403, "권한이 없는 사용자"), |
||||
|
||||
|
||||
EXTERNAL_API_ERROR("EA500", 500, "외부서버 호출에 실패하였습니다.") |
||||
; |
||||
|
||||
|
||||
|
||||
private final String code; |
||||
|
||||
private final int status; |
||||
|
||||
private final String message; |
||||
|
||||
private ExceptionCode(String code, int status, String message) { |
||||
this.code = code; |
||||
this.status = status; |
||||
this.message = message; |
||||
} |
||||
|
||||
public String code() { |
||||
return this.code; |
||||
} |
||||
|
||||
public String message() { |
||||
return this.message; |
||||
} |
||||
|
||||
public int status(){ |
||||
return this.status; |
||||
} |
||||
} |
@ -0,0 +1,24 @@
|
||||
package kr.co.palnet.kac.app.exception; |
||||
|
||||
public enum Level { |
||||
INFO(0), |
||||
WARN(1), |
||||
RETRY(2), |
||||
DROP(3), |
||||
RECYCLE(4), |
||||
CRITICAL(5); |
||||
|
||||
private int code; |
||||
|
||||
Level(int code) { |
||||
setLevel(code); |
||||
} |
||||
|
||||
public int getLevel() { |
||||
return code; |
||||
} |
||||
|
||||
public void setLevel(int code) { |
||||
this.code = code; |
||||
} |
||||
} |
@ -0,0 +1,42 @@
|
||||
package kr.co.palnet.kac.app.exception; |
||||
|
||||
import org.springframework.http.ResponseEntity; |
||||
import org.springframework.web.bind.annotation.ExceptionHandler; |
||||
import org.springframework.web.bind.annotation.RestControllerAdvice; |
||||
|
||||
import kr.co.palnet.kac.app.exception.model.BaseErrorModel; |
||||
|
||||
@RestControllerAdvice |
||||
public class ServerExceptionHandler { |
||||
|
||||
|
||||
@ExceptionHandler(AppException.class) |
||||
public ResponseEntity<BaseErrorModel> appExceptionHandle(AppException e) { |
||||
|
||||
ExceptionCode errorType = e.getErrorCode(); |
||||
|
||||
BaseErrorModel baseBody = new BaseErrorModel(); |
||||
baseBody.setCode(errorType.code()); |
||||
baseBody.setMessage(errorType.message()); |
||||
|
||||
e.printStackTrace(); |
||||
|
||||
return ResponseEntity.status(errorType.status()).body(baseBody); |
||||
} |
||||
|
||||
@ExceptionHandler(Exception.class) |
||||
public ResponseEntity<BaseErrorModel> exceptionHandle(Exception e) { |
||||
|
||||
ExceptionCode errorType = ExceptionCode.INTERNAL_SERVER_ERROR; |
||||
|
||||
BaseErrorModel baseBody = new BaseErrorModel(); |
||||
baseBody.setCode(errorType.code()); |
||||
baseBody.setMessage(errorType.message()); |
||||
|
||||
e.printStackTrace(); |
||||
|
||||
return ResponseEntity.status(errorType.status()).body(baseBody); |
||||
} |
||||
|
||||
} |
||||
|
@ -0,0 +1,6 @@
|
||||
package kr.co.palnet.kac.app.exception; |
||||
|
||||
public enum Source { |
||||
SERVER, |
||||
INTERNAL |
||||
} |
Loading…
Reference in new issue