스프링 부트에는 기본적으로 error handler가 들어가 있다.
index페이지가 없을 때, localhost:8080으로 요청 시, 보이는 화면이 기본 error handler가 처리해준 결과이다.
기본 error handling 로직은 BasicErrorController에 들어있다.
Error를 테스트 하기 위해 Controller를 만들어준다.
Controller에서 /hello 요청이 왔을 때 Error를 던지게 한다.
SampleException이라는 클래스를 만들어 RuntimeException을 던지도록 해준다.(extends RuntimeException)
그 후, 이 앱에 특화되어 있는 error 정보를 담고 있는 커스텀 클래스를 만들어 준다.
컨트롤러에서 @ExceptionHandler를 사용하여 SampleException이 발생할 때 쓰는 error handler를 만들어준다.
그럼 /hello 요청을 하면 만들어준 error hanlder가 정상 작동함을 볼 수 있다.
이렇게 하면, 이 Exception Handler는 이 컨트롤러 안에서만 사용가능하다.
전역적으로 사용하고 싶으면 클래스를 따로 만들고, 그 클래스에 @ControllerAdvice를 붙이고, 그 안에 @ExceptionHandler를 정의하면, 여러 컨트롤러에서 사용할 수 있다.
error 발생 시, status 코드 값에 따라 다른 웹 페이지를 보여주는 것이다.
src - main - resources - static or templates 에 error라는 디렉토리를 만들고, '상태코드 값.html' 파일을 만들어준다.(상태 코드 값은 완전히 같게 하거나, 5xx 처럼 앞자리만 표시해줘도 된다.)
index 페이지가 없는상태로 root 호출을하면 404에러가 발생한다.