ExceptionHandler

  • BasicErrorController

    • 스프링 부트가 제공하는 기본 예외 처리기

    • 기본적으로 ExceptionHandler를 등록해 동작한다.

    • HTML, JSON 응답을 지원한다.

@Controller
public class SampleController {

    @GetMapping("/exception")
    public String exception() {
        throw new SampleException();
    }

    @ExceptionHandler(SampleException.class)
    public @ResponseBody AppError sampleError(SampleException e) {
        AppError appError = new AppError();
        appError.setMessage("error.app.key");
        appError.setReason("IDK");

        return appError;
    }
}
{
  "message": "error.app.key",
  "reason": "IDK"
}
  • SampleException이 발생하면 ExceptionHandler가 실행된다.

전역적으로 적용하기

  • @ControllerAdvice

  • @ExchangeHandler

커스텀 에러 페이지

상태 코드 값에 따라 에러 페이지 보여주기

  • src/main/resources/static|template/error/

    • html 이름이 상태 코드 값과 동일하거나 5xx와 같아야 한다.

      • 404.html

      • 5xx.html

  • 더 많은 커스터마이징이 필요하면 ErrorViewResolver를 구현한다.

    • 동적으로 더 다양한 옵션을 선택할 수 있다.

Last updated