Controller 예외 처리

1. Error Response

@Getter
@AllArgsConstructor
public class ErrorResponse {
    private int status;
    private String message;
}

밑의 json 형태로 반환하기 위해 response entity를 생성한다.

{
	"status" : 200,
	"message" : "ok"
}

2. Enum - ErrorCode

@Getter
@AllArgsConstructor
public enum ErrorCodeEnum {
    USER_NOT_FOUND(HttpStatus.NOT_FOUND.value(), "User Not Found"),
    USER_ALREADY_EXIST(HttpStatus.CONFLICT.value(), "User Already Exist");

    private final int status;
    private final String message;
}

json으로 반환할 값을 enum으로 생성한다.

enum명(int status, String message) 형태로 필요한 에러를 선언하면 된다.

3. Custom Error

@Getter
public class ApiException extends RuntimeException {
    private final ErrorCodeEnum errorCodeEnum;

    public ApiException(ErrorCodeEnum e){
        super(e.getMessage());
        this.errorCodeEnum = e;
    }
}

예외 처리를 사용하기 위해 공통 Exception을 구현한다.

예외를 보낼 곳에 이런 형태로 사용할 수 있다.

throw new ApiException(ErrorCodeEnum.USER_NOT_FOUND);