ApiControllerAdvice에서 2개 이상의 Exception 타입 핸들링
75
작성한 질문수 4
안녕하세요.
ApiControllerAdvice에서 하나의 Handler 메서드에서 아래 2개 Exeception 타입을 처리하시도록 변경하셨는데요.
- DuplicateEmailException
- DuplicateProfileException
이렇게 할 경우, 아래와 같이 두 Exception의 공통 타입인 RuntimeException 객체로 파라미터를 받아야 하는거 아닐까요?
@ExceptionHandler({DuplicateEmailException.class, DuplicateProfileException.class})
public ProblemDetail duplicateExceptionHandler(RuntimeException e) {
return getProblemDetail(HttpStatus.CONFLICT, e);
}
감사합니다.
답변 2
1
앗. 그렇네요. 말씀하신 내용이 맞습니다.
API 예외응답 테스트까지 안 만들었더니 나중에 추가한 DuplicateProfileException 핸들링하는 부분을 놓쳤습니다.
이번 강의에선 ApiControllerAdvice를 본격적으로 만들지는 않았습니다. 예외처리와 응답 코드 등에 관해서 한번 정리하고 체계적으로 핸들러를 재구성할 계획이 있습니다. 어쨌든 제가 놓친 부분을 찾아주셔서 감사합니다.
파트2 초반에 이 문제를 어떻게 다룰지 이야기 해보겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다. yamsroun님, 질문 주셔서 감사합니다.
ApiControllerAdvice에서 두 개 이상의 예외를 하나의 핸들러 메서드에서 처리할 때, 두 예외가 공통적으로 상속받는 상위 클래스인 RuntimeException으로 처리할 수 있습니다. 하지만 예외 핸들러 메서드에서는 보통 특정 예외의 세부 처리나 로깅 등을 위해 각 예외 클래스 타입을 명시적으로 지정하여 다루는 것이 더 일반적입니다.
질문하신 내용처럼 두 개의 예외를 공통 타입으로 처리할 수도 있습니다:
@ExceptionHandler({DuplicateEmailException.class, DuplicateProfileException.class})
public ProblemDetail duplicateExceptionHandler(RuntimeException e) {
return getProblemDetail(HttpStatus.CONFLICT, e);
}
이렇게 처리하면 코드의 간결성 측면에서는 유리하지만, 각 예외에 대해 다르게 처리할 가능성을 아예 배제하게 된다는 점에서는 다소 유연성이 떨어질 수 있습니다.
관련된 질문으로 도움이 될 만한 유사한 질문을 참고하시면, 예외 처리 시 공통된 구조를 유지하는 방법과 각 예외별 특성을 반영하는 방법에 대한 지식을 더 확장하실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
도메인 모델에서 관계와 규칙을 구분하는 방법
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





