에러 처리 방법은 크게 세가지가 있다.
1. ErrorPage
2. 4xx Error / 5xx Error
3. Client가 200외에 처리를 하지 못할 경우 200을 내려주고 별도의 에러 메세지를 전달
SpringBoot에서는 기본적으로 BasicErrorController가 등록이 되어 해당 요청을 처리한다.
BasicErrorController의 핸들러 메소드
BasicErrorController.errorHtml() : View 응답
BasicErrorController.error() : json body 응답
비즈니스 로직이 던진 예외에 반응하는 핸들러 메소드이다.
위치는 특정 클래스 내부 혹은 @ControllerAdvice 컴포넌트 내부이다.
예외를 입력 인자로 다룰 수 있다.
컨트롤러안에 작성했을 경우에는 해당 컨트롤러만,
@ControllerAdvice에 작성했을 경우에는 프로젝트 전체로 예외 처리 범위가 지정된다.
APIEventController.class의 일부 코드 캡처 화면이다.
에러가 일어나도록 설정 후, 예외를 던져준다.
ResponseEntity는 개발자가 직접 결과 데이터와 HTTP 상태 코드를 제어할 수 있는 클래스이다.
위의 사진에서 GeneralException이 발생했으므로 ResponseEntity에서 만약 Clientside에러인지, severSideError인지 확인하여 클라이언트 문제라면 bad_request, 서버문제라면 Internealservererror로 httpstatus를 설정한다.
그 후 HTTP status와 httpbody를 반환한다.
APIEventController에 대해서만 예외처리한다.
해당 컨트롤러에 대해서만 예외처리한다.
BasseExceptionController에서 일어난 예외가 아니라 BaseController에서 일어난 에러 처리 가능
전체 컨트롤러에 대해 예외처리한다.
@RestControllerAdvice=@ControllerAdvice + @ResponseBody
스프링 MVC에서 내부적으로 발생하는 예외들을 처리하는 클래스
API 예외 처리를 담당하는 @controllerAdvice 클래스에서 상속 받아 사용
커스터마이징을 원하는 특정 메소드를 오버라이드