Browse Source

ExceptionHandler추가

pull/1/head
lkd9125(이경도) 8 months ago
parent
commit
44214a819c
  1. 12
      app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java
  2. 137
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/AppException.java
  3. 61
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/ExceptionCode.java
  4. 24
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/Level.java
  5. 42
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/ServerExceptionHandler.java
  6. 6
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/Source.java
  7. 14
      app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/model/BaseErrorModel.java

12
app/kac-app/src/main/java/kr/co/palnet/kac/api/com/controller/CodeController.java

@ -1,5 +1,7 @@
package kr.co.palnet.kac.api.com.controller;
import kr.co.palnet.kac.app.exception.AppException;
import kr.co.palnet.kac.app.exception.ExceptionCode;
import kr.co.palnet.kac.data.com.service.ComCodeDomainService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
@ -18,4 +20,14 @@ public class CodeController {
var test = comCodeDomainService.getComCdGroupBas("test");
return "test";
}
// @GetMapping("/exception")
// public void exception(){
// throw new AppException(ExceptionCode.ALREADY_CERT);
// }
}

137
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/AppException.java

@ -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;
}
}

61
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/ExceptionCode.java

@ -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;
}
}

24
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/Level.java

@ -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;
}
}

42
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/ServerExceptionHandler.java

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

6
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/Source.java

@ -0,0 +1,6 @@
package kr.co.palnet.kac.app.exception;
public enum Source {
SERVER,
INTERNAL
}

14
app/kac-app/src/main/java/kr/co/palnet/kac/app/exception/model/BaseErrorModel.java

@ -0,0 +1,14 @@
package kr.co.palnet.kac.app.exception.model;
import lombok.Data;
@Data
public class BaseErrorModel {
private String code;
private String message;
private String desc;
}
Loading…
Cancel
Save