1. CustomException 부모 클래스 생성
RuntimeException을 상속받아 작성한다.
ErrorCode를 입력받는 생성자를 생성, super(errorCode.getMessage())는 아래와 같이 exception발생 시 메시지를 설정한다.
public class CustomException extends RuntimeException implements Serializable {
private ErrorCode errorCode;
public CustomException(ErrorCode errorCode) {
super(errorCode.getMessage());
this.errorCode = errorCode;
}
public ErrorCode getErrorCode() {
return errorCode;
}
}
❗️ErrorCode
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum ErrorCode {
OVER_FILE_SIZE(400, "804", "파일 사이즈는 320*240 이하여야만 합니다."),
INTERNAL_SERVER_ERROR(500, "500", "서버 에러");
private int status;
private final String code;
private final String message;
ErrorCode(final int status, final String code, final String message) {
this.status = status;
this.code = code;
this.message = message;
}
public int getStatus() {
return status;
}
public String getCode() {
return code;
}
public String getMessage() {
return message;
}
}
2. CutomException을 상속받는 구체적인 Exception 생성
파일 업로드 시 발생하는 예외처리에 사용할 Exception이다.
public class FileStorageException extends CustomException implements Serializable {
public FileStorageException(ErrorCode errorCode) {
super(errorCode);
}
}
3. @ControllerAdvice(@RestConrollerAdvice)에서 핸들링
@ExceptionHandler(CustomException.class)
protected ResponseEntity<?> handleCustomException(CustomException e) {
log.error("CustomException", e);
ErrorCode errorCode = e.getErrorCode();
final ErrorResponse response = ErrorResponse.of(errorCode);
return new ResponseEntity<>(response, HttpStatus.resolve(errorCode.getStatus()));
}
'STUDY > Spring' 카테고리의 다른 글
Spring Boot | JPA 사용해보기 (1) + H2데이터베이스 설치 (0) | 2021.04.06 |
---|---|
Spring Boot | profile설정 ( + 2.4이상 버전 변경내용 추가 ) (0) | 2021.04.05 |
Spring Boot | Spring Security @PreAuthorize사용하기 (0) | 2021.03.26 |
Spring Boot | REST API 파일 업로드 / 다운로드 (1) | 2021.03.23 |
Spring Boot | @ControllerAdvice로 Exception 처리하기 (0) | 2021.03.19 |