@ExceptionHandler 예외처리
@ExcepitonHandler 를 사용해서 에러 응답 메세지를 작성해서 보내줄 수 있다
Controller레벨에서 사용한다
➜ 하지만 에러메세지 정보뿐만 아니라 ResponseBody의 전체정보가 전달된다
공통된 에러들은 ErrorResponse 클래스를 만들어서
DTO클래스의 유효성 검사를 실패한 필드(멤버변수)에 대한 Error정보만 담아서
클래스 내의 FieldError 클래스로 응답전송 가능하다
@ExceptionHandler 단점
각 클래스마다 RequestBody에 대한 유효성검증 애너테이션을 사용해서 에러처리를 해야해서 코드중복이 발생된다
Controller클래스내에 처리해야할 예외가 유효성 검증에 대한 예외(MethodArgumentNotValidException)만 있는게 아니라서 @ExceptionHandler를 추가한 에러처리 핸들러메서드들이 늘어남
@RestControllerAdvice를 사용한 예외처리 공통화
@RestControllerAdvice 애너테이션을 사용하여 새로 클래스를 만들어서
예외처리를 공통화 하여 여러 Controller클래스에서 @ExceptionHandler,@InitBinder,@ModelAttribute 가 붙은 메서드들을 공유 가능하다
@ResponseStatus
(ResponseEntity로 데이터 래핑하는 경우에는 쓰지않음 ErrorResponse로 래핑하는 경우에만 사용)
리턴값으로 HttpStatus를 동적으로 지정 가능
@RestControllerAdvice / @ControllerAdvice
@RestControllerAdvice 는 데이터다룰때 사용 , @ControllerAdvice의 기능을 포함하고있다
@ControllerAdvice는 View 다룰때 사용
@RestControllerAdvice는 JSON,XML 데이터 반환 예외발생시 객체반환 ResponseBody로 전송하기 위해서 ResponseEntity로 데이터를 래핑할필요가 없다
of() 메서드
네이밍컨벤션
객체 생성시 어떤 값들의 객체를 생성한다는 의미, 필요한 초기값 생성
예외 던지기(throw) 및 예외 처리
체크 예외(Checked Exception)
예외를 복구,회피등 구체적인 처리를 해야하는 예외
ClassNotFoundException
컴파일
언체크 예외(Unchecked Exception)
어떤 처리를 할 필요가 없는 예외
NullPointerException,RuntimeException
런타임
의도적으로 예외를 던질 수 (throw) 있는 상황
백엔드 서버와 외부 시스템과의 연동에서 발생하는 에러처리
- 백엔드쪽에서 의도적으로 던져서 클라이언트에게 에러정보를 알려줄 수 있음
시스템 내부에서 조회하는 리소스(자원)가 없는 경우
- 서비스 계층에서 해당 회원정보가 없다는 예외를 의도적으로 전송해서 클라이언트에게 알려줄 수있음
사용자 정의 예외(Custom Exception)
구체적으로 표현한 예외를 만들어서 던질 수 있음
'개발공부🌷 > Spring MVC' 카테고리의 다른 글
Spring MVC JPA (0) | 2023.11.28 |
---|---|
Spring MVC Data JPA (0) | 2023.11.27 |
Spring MVC 서비스계층 ,Mapper (0) | 2023.11.23 |
Spring MVC API 계층 2 (0) | 2023.11.22 |
Spring MVC API 계층 1 (0) | 2023.11.22 |