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

H K님의 프로필 이미지
H K

작성한 질문수

스프링 DB 1편 - 데이터 접근 핵심 원리

스프링 예외 추상화 적용

7:30 DuplicateKeyException 질문

작성

·

402

1

7:30 부분에서 잘 이해가 안가는 부분이 있습니다.

35 라인으로 catch(DuplicateKeyException e)로 예외를 잡아주셨는데

저 익셉션을 Repository에서
throw exTranslator.translate("update", sql, e);
이런식으로 변환된 익셥션이 (DuplicateKeyException )
이 익셉션을 Service로 던져서 처리 하라는 말씀인가요?

 

아니면 자동으로 DuplicateKeyException이 서비스 계층으로 넘어 온다는 말씀인가요 ??

답변 1

4

안녕하세요, H K 님! 공식 서포터즈 codesweaver 입니다.

Exception 은 반드시 누군가가 처리해야 하는데요, 이 Exception을 누가 처리 할건지, 각 객체에게 순차적으로 묻습니다. 이때 순서는 Exception이 발생한 지점과 가장 가까운 객체 입니다.

 

Repository 에서 Exception이 발생하면 우선 Repository에게 Exception을 어떻게 할 건지 묻습니다. (Exception에 맞는 catch 구문이 있을 경우 Exception 상황을 Repository가 통제할 수 있습니다)

강의에서는 Repository가 catch()로 Exception을 잡긴 하나, 코드를 살펴보면 다시 Exception을 던지고 있습니다. 그래서 새로운 Exception(DuplicatKeyException)이 발생하고 이를 catch 하는 구문이 없으니 다음으로 가까운 객체 Service로 넘어갑니다. 만약 Service 단에서 catch()를 통해 어떤 처리를 하면 그제서야 Exception은 종료합니다.

 

강의에서 말씀드린 것은 Service에서 이런 예외를 잡아 추가적인 처리를 할 수 있다는 점을 알려드린 것입니다.

감사합니다.

H K님의 프로필 이미지
H K
질문자

감사합니다

H K님의 프로필 이미지
H K

작성한 질문수

질문하기