반응형

아래 코드는 외부 API를 통해 Code를 받아왔을 때, 에러를 발생시키기 위한 코드이다.

enum class ExternalErrorCode(val code : String, val defaultMessage : String){
    HEADER_ERROR("4002", "Header Error"),
    INVALID_IP_UNAUTHORIZED("4008", "인증되지 않은 IP 입니다"),
    INVALID_CODE("4106", "상품코드 또는 ID가 유효하지 않습니다"),
    EMPTY_RESULT("4115", "검색된 데이터가 없습니다") {
        override fun error(message: String?) {
            throw EmptyResultException(message ?: defaultMessage)
        }
    },
    DATA_ACCESS_ERROR("4205", "DataAccessException");

    open fun error(message: String?){
        throw ExternalResponseException(message?:defaultMessage)
    }

    companion object{
        fun parse(code: String) : ExternalErrorCode {
            return values().find { it.code == code }
        }
    }
}

enum class ExternalErrorCode 내부에 정의된 error 함수는 모든 enum 값에 대해서 공통적으로 처리되는 함수이며, 특정 enum 값 아래에 override 된 error 함수는 재정의 하여 해당 enum 값의 함수로만 작동하게 된다.

위의 코드에서는 EMPTY_RESULT에 대한 enum 값만 EmptyResultExceptionthrow 하게 되어있으면 나머지는 공통적으로 ExternalResponseExceptionthrow하게 된다.

반응형

+ Recent posts