• 티스토리 홈
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 마스터하기 예외처리 1
        2022년 06월 11일
        • starryeye
        • 작성자
        • 2022.06.11.:05
        반응형

        개발을 하다보면.. 여러가지 예외(exception)가 발생할 수 있다.

        먼저 순수 서블릿 컨테이너가 예외를 어떻게 처리하는지 알아보자.

        1. 일반 Exception

        2. sendError 메서드 

         

        기본 지식

        위와 같이 error-ex 컨트롤러에 접근하면 런타임 exception을 발생시켜서 던져보자!

        그러면...

        바로 errorEx 메서드를 호출한 메서드로 넘어가고 그 메서드를 호출한 메서드로 넘어가고 타고타고 계속 넘어간다.

        (또 예를 들면, java main 함수에서 예외가 발생되면 main 너머로 예외가 던져 진다..)

         

        웹 어플리케이션에서의 예외 발생

        WAS -> 필터 -> DispatcherServlet(서블릿) -> 인터셉터 -> 컨트롤러

        위는 일반적으로 서버로 요청이 들어오면 호출 되는 순서이다.

        여기서 컨트롤러에서 예외가 발생된다면...

        컨트롤러 -> 인터셉터 -> DispatcherServlet(서블릿) -> 필터 -> WAS

        호출 된 역순으로 톰캣같은 WAS까지 예외가 전달된다.

         

        참고>

        application.properties 에

        server.error.whitelabel.enabled=false 를 추가하면

        예외가 발생했을 때, 스프링 부트가 기본으로 제공하는 에러 페이지를 끌 수 있다.

        끄게 되면 tomcat(WAS)가 제공하는 오류화면을 볼 수 있다.

        예외 발생시, 기본적으로 500 http 상태코드(Internal Server Error)인 톰캣 에러페이지 제공

        정의되지 않은 URI를 요청하면.. 404 http 상태코드(not found)인 톰캣 에러페이지 제공

         

        HttpServletResponse가 제공하는 sendError 메서드

        sendError메서드를 당장 호출한다고 해서 예외가 발생하는건 아니지만...

        서블릿 컨테이너에게 오류가 발생했다고 전달 할 수있는 메서드이다.

         

        HttpServletResponse의 sendError 메서드

        위와 같이 sendError 메서드는 Http 상태코드와 오류 메세지를 추가 할 수 있다.

         

        위와 같이 사용이 가능하다.

        sendError는 일반적인 예외가 발생하여 바로 호출된 역순으로 던져지는게 아니라

        로직을 모두 수행 후, 일반적인 return으로 정상적인 흐름을 탄다.

        그래서, 서블릿 컨테이너는 컨트롤러를 호출 하고 return 되면 sendError가 호출 되었는지.. 확인을 한다.

        호출이 되었다면..

        설정한 오류 코드에(위 예시에서는 404) 맞춰 오류 페이지를 보여준다.

         

        반응형

        'Spring > MVC' 카테고리의 다른 글

        Spring MVC 마스터하기 예외처리 3  (0) 2022.06.11
        Spring MVC 마스터하기 예외처리 2  (0) 2022.06.11
        Spring MVC 마스터하기 5  (0) 2022.06.04
        Spring MVC 마스터하기 인터셉터 1  (0) 2022.06.04
        Spring MVC 마스터하기 필터 1  (0) 2022.06.03
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바