inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1

Exception 정의 기준

해결된 질문

104

3831568

작성한 질문수 15

0

application 쪽에서는 커스텀 예외를 정의해서 사용했는데 Profile과 Email 레코드에서 값 형식 검증 부분에서는 표준 예외를 사용하셨더라구요

예외를 분리해서 사용하는 기준이 무엇일까요?

java spring spring-boot jpa 리팩터링 ddd

답변 1

1

토비

Profile, Email에서 발생하는 오류는 일반적인 형식 검증을 통과하지 못한 경우에 발생하는 것이고 이에 대한 예외는 자바에서 범용적으로 쓰이는 것이 존재하기 때문에 그걸 선택했습니다.

두 가지 이유가 있는데요.

  • 하나는 프론트엔드에서 충분히 검증하고 걸러져야 하는 경우인데 이게 서버까지 넘어왔다면 일종의 버그입니다. 버그에 대해서 도메인 지식을 담은 커스톰 예외를 굳이 선언하는 것은 의미가 없고, 낭비라고 보기 때문입니다. NPE에 대해서 매번 의미있는 예외를 만들지 않는 것과 같습니다.

  • 아직 서버가 던지는 예외에 대한 표준 가이드를 논의하고 결정하지 않았습니다. 파트 2나 시리즈 후반에 이를 본격적으로 검토하고 표준을 잡아서 가이드에 넣을 때 변경될 수도 있습니다.

반면 이메일 중복 예외는 도메인 로직을 표현한 코드입니다. 도메인 지식을 담고, 도메인에서 정한 제약조건을 나타내야 하고, 이건 프론트엔드에서 사전 검증이 불가능하거나 어렵고, 또 복구 가능한(중복되지 않는 다른 이메일로 재시도) 예외이기 때문에 커스톰 예외로 정의된 것입니다. 이건 자바가 가지고 있는 일반적인 예외 클래스로는 그 의미를 담을 수 없기 때문이기도 합니다.

일단은 이 정도 기준으로 Part 1에서는 예외 사용을 결정했습니다. 앞으로 더 논의해볼 부분이 생기면 그때 다시 예외 정책에 관해 이후 강의에서 다뤄보도록 하겠습니다.

 


도메인 모델에서 관계와 규칙을 구분하는 방법

0

37

2

헥사고날 아키텍처에서의 배치, 시큐리티, 비동기 이벤트 처리는 어떻게 하나요?

0

115

2

어댑터에서 도메인에 직접 의존하는 경우에 대해

0

116

2

Member 도메인이 PasswordEncoder를 받는 구조 질문 있습니다.

0

103

2

MemberService와 EmailSender 책임 분리에 대한 질문

0

102

2

NonNullApi를 NullMarked로 대체하라고 합니다.

0

123

2

39. 문서와 코드 다듬기 updateInfo 테스트 질문 있습니다.

0

71

2

Repository Adapter 설계에 대해 피드백을 부탁드립니다

0

105

2

헥사고날 part2 강의 출시 예정일 문의 드립니다.

0

244

2

PT 문의사항

0

97

1

초기 어플리케이션 구동 시 compose.yml 파싱 오류

0

147

2

애플리케이션의 JPA 리턴과 도메인 모델

0

125

2

애그리거트 루트의 하위 도메인들의 depth가 깊어질 때 문의

0

133

2

페이징 처리를 해야한다면 어떻게 해야할까요?

0

187

2

애그리거트의 repository

0

116

2

Domain Expert가 정확히 어떤 역할을 하는 사람인가요?

0

228

1

회원 애플리케이션 서비스 테스트 (1)

0

102

2

정적 팩토리 메서드 관련 질문드립니다!

0

103

2

spotbug + @NonNullApi 로만 Null 방어가 될까요?

0

127

2

required 포트에 관해서

0

90

2

혹시 다음 편은 언제쯤 오픈할까요?

0

163

2

서비스 단위 테스트 코드 작성

0

94

2

domain 모듈에 entity를 정의한다고 했을때

0

95

2

여러 엔티티의 조합으로 리포트를 제공해야할 때

0

78

2