ExceptionHandler로 처리할 필수 Exception들?
877
작성한 질문수 12
@RestControllerAdvice와 @ExceptionHandler를 이용해서 REST API의 예외처리시
일반적으로 Handling 해줘야할 Exception들이 뭐가 있을까요?
특히 JPA쪽도 다양한 종류의 RuntimeException 상속한 Exception들이 발생하다보니,
뭘 얼마나 막아줘야할지 좀 애매? 막막한 부분들이 있는 것 같습니다.
현재는 REST API 구현시 Testcase를 통해 다양한 상황을 테스트하면서 발생하는 Exception들을 확인하면서 계속해서 ExceptionHandler를 추가하고 있는데요.
Testcase 돌리다가 DataIntegrityViolationException case를 보고
ExceptionHandler 추가...이런식으로 개발하고 있는데,
상위 Exception들로 싹 잡아버려야할지...
강사님의 현업 경험을 바탕으로
기본적으로 이러한 Exception들을 handling해줘야한다고 할만한 best practice 없을까요?
답변 1
1
안녕하세요. GPK님^^
아주 간단한 해답이 있습니다.
DB나, 시스템, 네트워크 등등 에서 발생한 대부분의 예외들은 해결이 불가능합니다.
이런 경우는 사용자에게는 500으로 응답하면서 알 수 없는 예외가 발생했습니다. 정도로 알려주고, 서버 내부에서 에러 로그를 남겨서 개발자가 확인하는 것이 좋습니다. (물론 인증 오류, 클라이언트의 요청 실수 등등 상황에 따라서 4xx로 응답해야 하는 경우도 있겠지요?)
그리고 정말 특정 예외중에 잡아서 다른 응답을 해야 하는 경우에만 예외를 별도로 잡아서 처리해주시면 됩니다.
감사합니다.
0
주말인데, 답변 감사드립니다.
그런데 예를 들어서 DB Table이 있고, 필드 중에 unique가 있다면,
해당 필드에 대해 중복된 데이터를 넣으려고 하면 DataIntegrityViolationException이 발생하게 됩니다.
(PK가 중복되는 경우도 유사한 케이스이구요.)
이런 경우, 클라이언트 측의 오류라고 보는게 맞을 것 같은데요.
이런 경우,
(1) Controller에 대한 ExceptionHandler까지 가서 처리하는게 좋을지,
(2) 아니면 insert나 update 전에 동일한 값이 있는지 미리 확인해서 biz logic단에서 에러 처리를 하는게 좋은지
궁금합니다.
(2)의 경우, 좀더 깔끔해 보이지만 동일값 확인을 위한 query가 추가로 호출되는데,
경험상 보통 어떤 선택을 많이 하셨는지 궁금합니다.
이미지 업로드와 db 트랜잭션 묶는법
0
46
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
55
2
MessageSourceTest 코드
0
49
1
인터셉터 에러 설정
0
48
1
resolveArgument()메서드 질문
0
58
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
60
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
133
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
93
3
pdf 오타 문의
0
57
1
ItemUpdateForm 검증 관련 질문입니다.
0
50
1
22page 링크 주소 변경
0
59
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
53
1
섹션3번 수업에 대한 질문입니다.
0
80
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
87
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
66
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
143
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
65
1
톰캣 에러 페이지가 안보입니다.
0
104
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
81
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
118
2
ApiExceptionController 질문드립니다.
0
64
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
66
1
MemberRepository 필드의 fianl 선언 유무
0
85
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
59
1





