ExceptionHandler
기본적으로 등록되어있는 ErrorHandler가 메시지를 출력해주지만 직접 커스텀하여 에러 메시지를 출력할 수도 있습니다.
위 사진이 기본적으로 등록된 에러 메시지입니다.
curl 명령어로 보면 JSON 형식으로 오류가 나는 것을 확인 가능합니다.
- BasicErrorController : 기본 예외 처리를 합니다.
핸들러 실습 해보기
Controller 클래스
1 |
|
먼저 Hello 요청을 보낼 때 SampleException 클래스를 통해 에러메시지를 출력하기 위해 에러를 던집니다.
SampleException 클래스
RuntimeException을 상속받아 실행시 에러를 발생시키도록 합니다.
AppError 클래스
1 | public class AppError { |
메시지와 에러 이유를 나타낼 수 있도록 변수 및 getter, setter를 선언합니다.
Controller 클래스
1 |
|
@ExceptionHandler를 활용하여 RuntimeException시 발생하는 에러를 커스텀 하기 위해 선언을 해줍니다.
그리고 AppError클래스의 메시지, 에러이유를 정의해주고 return합니다.
/hello 경로 이동시 직접 선언했던 에러 메시지가 출력됩니다.
에러 페이지 커스텀하기
- 참고 : 스프링공식문서
- 경로 : src/main/resources/static/error/
- 경로에 상태코드와 동일한 에러페이지를 만들어야 동작합니다. 혹은 첫 번째 숫자만 명시합니다.
- 404.html
- 5xx.html
- ErrorViewResolver 구현
경로에 404에러 및 5xx에러 발생시 나타내는 페이지를 커스텀 합니다.
Root로 접근했을 경우 따로 페이지가 없기 때문에 404에러가 발생하여 커스텀한 페이지가 출력된 것을 확인할 수 있습니다.