• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

ExceptionHandler로 처리할 필수 Exception들?

23.03.24 15:57 작성 조회수 543

1

@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로 응답해야 하는 경우도 있겠지요?)

그리고 정말 특정 예외중에 잡아서 다른 응답을 해야 하는 경우에만 예외를 별도로 잡아서 처리해주시면 됩니다.

감사합니다.

GPK님의 프로필

GPK

질문자

2023.04.02

주말인데, 답변 감사드립니다.

그런데 예를 들어서 DB Table이 있고, 필드 중에 unique가 있다면,
해당 필드에 대해 중복된 데이터를 넣으려고 하면 DataIntegrityViolationException이 발생하게 됩니다.
(PK가 중복되는 경우도 유사한 케이스이구요.)
이런 경우, 클라이언트 측의 오류라고 보는게 맞을 것 같은데요.

 

이런 경우,
(1) Controller에 대한 ExceptionHandler까지 가서 처리하는게 좋을지,
(2) 아니면 insert나 update 전에 동일한 값이 있는지 미리 확인해서 biz logic단에서 에러 처리를 하는게 좋은지

궁금합니다.

(2)의 경우, 좀더 깔끔해 보이지만 동일값 확인을 위한 query가 추가로 호출되는데,

경험상 보통 어떤 선택을 많이 하셨는지 궁금합니다.

 

GPK님 다음을 참고해주세요^^

https://www.inflearn.com/questions/59250

감사합니다.