Skip to main content

예외 처리,오류

·184 words·1 min· loading
Table of Contents
SpringMVC2 - This article is part of a series.
Part 9: This Article

프로젝트 생성
#


서블릿 예외 처리
#

순수 서블릿 컨테이너가 에러를 처리하는 방법

  • Exception
  • response.sendError

자바를 직접 실행할때, main()에서 에러를 던지면 해당 쓰레드는 종료됨 웹 어플리케이션은 Was 까지 던져지고, 해당 화면을 보게됨

서블릿은 Exception이 서블릿 밖으로 전달되거나, response.sendError()가 호출 되었을 때 상황에 맞게 오류 처리 기능을 제공


작동원리

  1. 예외가 발생해서 WAS까지 전파
  2. WAS는 오류 페이지 경로를 찾아서 내부에서 호출 (오류 페이지 경로로 다시 요청됨)

Was는 오류 페이지를 요청하면서 오류 정보를 requestattribute에 추가해서 넘겨줌


서블릿은 클라이언트로부터 발생한 정상 요청인지, 아니면 오류 페이지 출력을 위한 내부 요청인지 구분하기 위해 `DispatcherType` 정보 제공

DispatcherType

  • REQUEST : 클라이언트 요청
  • ERROR : 에러 요청
  • FORWARD : RequestDispatcher.forward(request,response)
  • Include : 서블릿이나 다른 서블릿에서 JSP 결과 포함할때
  • ASYNC : 비동기 호출

스프링 부트 예외 처리
#

오류가 발생했을 때, /error를 요청. 스프링 부트가 자동 등록한 BasicErrorController는 이 경로를 기본으로 받음

개발자 할일 BasicErrorController는 기본적인 로직이 모두 개발되어 있으므로, 오류 페이지 화면만 등록하면 됨 /resorces/templates/error/...에 오류 페이지 파일을 넣어두기만 하자

4xx.html은 모든 400번대 에러를 처리

BasicErrorController가 제공하는 정보

timestamp: Sun Feb 12 15:15:03 KST 2023
path: /error-ex
status: 500
message: null
error: Internal Server Error
exception: null
errors: null
trace: null

SpringMVC2 - This article is part of a series.
Part 9: This Article