묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
ExceptionHandler로 처리할 필수 Exception들?
@RestControllerAdvice와 @ExceptionHandler를 이용해서 REST API의 예외처리시 일반적으로 Handling 해줘야할 Exception들이 뭐가 있을까요?특히 JPA쪽도 다양한 종류의 RuntimeException 상속한 Exception들이 발생하다보니,뭘 얼마나 막아줘야할지 좀 애매? 막막한 부분들이 있는 것 같습니다.현재는 REST API 구현시 Testcase를 통해 다양한 상황을 테스트하면서 발생하는 Exception들을 확인하면서 계속해서 ExceptionHandler를 추가하고 있는데요. Testcase 돌리다가 DataIntegrityViolationException case를 보고 ExceptionHandler 추가...이런식으로 개발하고 있는데, 상위 Exception들로 싹 잡아버려야할지... 강사님의 현업 경험을 바탕으로기본적으로 이러한 Exception들을 handling해줘야한다고 할만한 best practice 없을까요?
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
@ControllerAdvice 적용시에 404 에러의 경우
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요. 강의 내용중에 궁금한게 있어서 질문드립니다. @ControllerAdvice 적용시에 다른 Exception은 잘 적용되는데 URL을 잘 못 입력해서 발생하는 404(NoHandlerFoundException)의 경우에는 처리가 안되어서 구글링을 해서 아래와 같이 적용 처리 하였습니다. 이때 @EnableWebMvc를 넣지 않으면 처리가 안 되는데 @EnableWebMvc가 왜 필요한건지 궁금해서 질문 남깁니다. * 저의 가설은 - 스프링부트가 부팅될때 DispatherServlet이 필요한 설정들을 자동구성하는데 이때 자동구성된 설정에서 수동구성 설정이 추가되면서(=> setThrowExceptionIfNoHandlerFound(true)) 다시 설정이 적용되어야 하고 그때 @EnableWebMvc가 그 역할을 한다. @Configuration@RequiredArgsConstructor@EnableWebMvcpublic class WebConfig implements WebMvcConfigurer { private final AccessInterceptor accessInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(accessInterceptor) .order(1) .addPathPatterns("/**") .excludePathPatterns("/error"); } /** * 적절한 URL을 못 찾으면(Not Found Handler) Exception 으로 던진다. * + EnableWebMvc * @return */ @Bean DispatcherServlet dispatcherServlet() { DispatcherServlet dispatcherServlet = new DispatcherServlet(); dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); return dispatcherServlet; }}
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요! 질문이 있습니다.
안녕하세요! 항상 좋은 강의 감사드립니다. @ControllerAdvice 공부하다가 궁금증이 생겨 질문 드립니다. 혹시, Controller에서 발생한 예외 말고, interceptor의 preHandle(), postHandle(), afterCompletion() 메서드 내에서 발생하는 예외도 @ControllerAdvice나 @ExceptionHandler로 잡을 수 있나요??