강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

inflearn_pi_4님의 프로필 이미지
inflearn_pi_4

작성한 질문수

스프링 핵심 원리 - 기본편

조회한 빈이 모두 필요할 때, List, Map

안녕하세요. discount 2번 사용에 관해 질문드립니다.

작성

·

155

0

안녕하세요! 일전에,

ㅡㅡ

고객쪽에서 MemberRepository m = new MemoryMemberRepository();

라는 예제에서는 Memory에서 오류가 발생했을 때, JdbcMemberRepository();를 사용하도록 코드를 짜고 싶습니다.

그렇다면, client쪽에서

try{

  MemberRepository m = new MemoryMemberRepository();

} catch() {

  MemberRepository m = new JdbcMemberRepository();

}

ㅡㅡ

 

위와 같은 질문을 드렸고, List, Map강의를 보라하셔서 봤습니다.이번 강의에 나온 discount코드를 가지고 추가적인 기획과 함께 코드를 짜보았습니다.

1. discountCode는 "rate"가 우선순위 1위이고, price가 0이면 오류를 반환하다.

2. 1번 오류가 발생했을 때, "fix" discount 로직을 실행한다.

 

public int discount(Member member, int price, String discountCode) {

     // ... 로직은 강의와 동일
}

ㅡㅡㅡㅡㅡ

discount를 실행하는 구현체는 아래와같습니다.

class Something {

  public doDiscount() {

       try{

             discountService.discount(..., "rate")

        }catch{

              discountService.discount(..., "fix")

        }

        ....

   }

}

결론적으로 제가 궁금한건, 같은 추상화로 구현된 로직 중, 첫번째 로직이 실패했을때 두번째 로직을 실행시켜라 라는 상황은 try, catch로 구현하는 것이 맞는지 궁금합니다

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. hduk님

여러가지 구현 방안이 있는데요.

응답값을 체크해서 할 수도 있고, 지금처럼 예외를 통해 처리할 수 도 있습니다.

감사합니다.

inflearn_pi_4님의 프로필 이미지
inflearn_pi_4

작성한 질문수

질문하기