- Spring MVC 마스터하기 예외처리 72022년 06월 18일
- starryeye
- 작성자
- 2022.06.18.:35
예외처리 6번 포스팅에서는
일반적인 예외가 발생했을때 HandlerExceptionResolver를 활용하여
sendError로 정상 리턴되면서 WAS가 알아볼 수 있도록 새로운 예외를 만들어주고
상태코드를 변경해줄 수 있었다.
또한, HttpServletResponse 파라미터를 활용하여 응답을 직접 구성해줘서 그대로 응답으로 내려주는 가능성도 보인다.
코드로 알아보자..
개발자가 UserException이라는 새로운 예외를 만들었고 해당 예외를 처리 해줄 수 있는
HandlerExceptionResolver를 구현하였다.
해당 예외가 발생했다면 응답 상태코드로 400을 내려주도록 하였다.
BasicErrorController에서 벗어나보자..
-> 요청 header의 accept가 application/json이면 여기서 바로 응답 데이터를 만들어 응답으로 내려준다.
(그 외라면 500 view(Http 에러 페이지)를 보여주도록 하였다.)
정리
HandlerExceptionResolver를 활용하면 개발자의 의도대로 예외처리가 가능하다.
예외에 따라 상태코드도 커스터마이징이 가능하며,
직접 응답을 구성할 수도 있다(BasicErrorController를 활용하지 않아도 된다.)
-> 예외를 WAS(서블릿 컨테이너)까지 안보낼 수 있게 된다.
HandlerExceptionResolver가 없다면..
-> 일반적인 예외 혹은 sendError가 던져져서 WAS(서블릿 컨테이너)까지 가게된다..
-> 그러면 그 예외를 처리하기 위한 로직이 동작(예외를 처리하기 위한 Controller 호출)되는데..
-> 이런 불필요한 동작 생긴다.
하지만..
개발하기엔 불편한점이 많다.
어노테이션을 활용한 컨트롤러를 사용하기전 과거 처럼..
HttpServletRequest, HttpServletResponse를 활용하여 불편하게 직접 응답 데이터를 만들어줘야한다.
'Spring > MVC' 카테고리의 다른 글
Spring MVC 마스터하기 예외처리 9 (0) 2022.06.19 Spring MVC 마스터하기 예외처리 8 (0) 2022.06.19 Spring MVC 마스터하기 예외처리 6 (0) 2022.06.18 Spring MVC 마스터하기 예외처리 5 (0) 2022.06.11 Spring MVC 마스터하기 예외처리 4 (0) 2022.06.11 다음글이전글이전 글이 없습니다.댓글