[Spring] Enum 에러코드 관리하기

John·2022년 10월 10일
1

개발 메모🌷

목록 보기
4/13
post-thumbnail

안녕하세요.
Response에 내려오는 에러코드를 Enum으로 관리하는 방법을 공부해보고 정리한 글입니다.


Enum

  1. Enum은 Eumeration로 열거형입니다.
    열거형은 서로 연관된 상수들의 집합을 의미합니다.

  2. 기존에 상수를 정의하는 방법이였던 final static string 과 같이 문자열이나 숫자들을 나타내는 기본자료형의 값을 enum을 이용해서 같은 효과를 낼 수 있습니다.

메소드설명
static E values()해당 열거체의 모든 상수를 저장한 배열을 생성하여 반환함.
static E valueOf(String name)전달된 문자열과 일치하는 해당 열거체의 상수를 반환함.
protected void finalize()해당 Enum 클래스가 final 메소드를 가질 수 없게 됨.
String name()해당 열거체 상수의 이름을 반환함.
int ordinal()해당 열거체 상수가 열거체 정의에서 정의된 순서(0부터 시작)를 반환함.

Response

Response

  1. 에러코드는 Response의 message 필드 값에 내려온다.
  2. Enum의 필드 값을 순회하면서 일치하는 에러코드를 가져온다.
  3. 에러코드를 통해 사전에 정의한 에러메세지를 출력한다.

ErrorCode

@Getter
public enum ErrorCode {
	INVALID_PARAMS(400, "InvalidParams", "필수데이터 누락, 또는 형식과 다른 데이터를 요청하셨습니다.")
	, UNAUTORIZED(401, "Unauthorized", "토큰 정보가 유효하지 않습니다.")
	, UNAVAILABLE(401, "Unavailable", "회원가입이 완료되지 않은 사용자입니다.")
	, NOT_FOUND(404, "NotFound", "존재하지 않는 데이터입니다.")
	, CONFLICT(409, "Conflict", "데이터가 충돌되었습니다.")
	;
	
	ErrorCode (int status, , String code, String message) {
	    this.status = status;
        this.code = code;
	    this.message = message;
	}

	private int status;
    private String code;
	private String message;
	
	public static ErrorCode valueOfCode(String errorCode) {
		return Arrays.stream(values())
                .filter(value -> value.code.equals(errorCode))
                .findAny()
                .orElse(null);
	}
	
}

Test

코드상태 코드에러 메세지
InvalidParams400필수데이터 누락, 또는 형식과 다른 데이터를 요청하셨습니다.
Unauthorized401토큰 정보가 유효하지 않습니다.
Unavailable401회원가입이 완료되지 않은 사용자입니다.
NotFound404존재하지 않는 데이터입니다.
Conflict409데이터가 충돌되었습니다.
  1. 에러코드 "InvalidParams"
  2. 에러메세지 "필수데이터 누락, 또는 형식과 다른 데이터를 요청하셨습니다."가 출력되는지 확인한다.

테스트코드

테스트결과


참고
[Java] Enum의 사용법
[에러처리101] Enum으로 에러코드 관리하기
TCP SCHOOL Enum 클래스

profile
기록을 습관으로

0개의 댓글