웹 브라우저에서 예외가 발생 시 errorHtml()을 거쳐 ViewResolver를 통해 에러 페이지가 반환되고, 브라우저가 아닌 곳(Postman, Curl, 서버 등)에서 요청을 한다면 error()를 거쳐 에러 메세지을 받게 된다

BasicErrorController

- 스프링의 기본 예외 처리 방식

 

 

 

 

Custom error page

- 직접 에러를 반환받아 예외핸들러로 처리

 

@ExceptionHandler

- @Controller, @ControllerAdvice, @RestControllerAdvice 클래스의 메소드의 어노테이션으로 선언하여 예외 처리 수행

 



 

@ControllerAdvice(Spring3.2), @RestControllerAdvice(Spring4.3

- @ExceptionHandler가 전역적으로 예외 처리

- @RestControllerAdvice는 @ControllerAdvice와 달리 @ResponseBody로 응답을 Json 으로 준다.




 

 

 

@ControllerAdvice

- @Controller나 @RestController에서 발생한 예외를, @ControllerAdvice 어노테이션을 추가한 클래스에서 Exception Handler를 통해 관리/처리

 

 

-  하나의 클래스에서 모든 컨트롤러의 예외 처리를 전역으로 수행

- 별도의 try-catch문이 없이, 코드 가독성 증가



 Spring의 예외 처리 흐름

예외 처리기들이 스프링 빈으로 등록되어 있고, 예외가 발생 시, Resolver들이 처리가능한지 판별 후 예외 처리한다

1) ExceptionHandlerExceptionResolver: @Controller, @ControllerAdvice의 @ExceptionHandler 처리

2) ResponseStatusExceptionResolver: @ResponseStatus, ResponseStatusException 처리

3) DefaultHandlerExceptionResolver: 스프링 예외들 처리
ex) HttpMediaTypeNotSupportedException, NoHandlerFoundException 등

 

 

 

 

 

 

 

 

'JAVA > 1' 카테고리의 다른 글

alert message in java controller  (0) 2022.05.15
Model / ModelAndView 정리  (0) 2022.05.15
@RequestParam @RequestBody @ModelAttribute  (0) 2022.05.07
Content-Type  (0) 2022.05.06
415 error  (0) 2022.05.06

+ Recent posts