• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring MVC 마스터하기 예외처리 7
        2022년 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
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바