My Melody Is Cute Spring MVC 예외처리
본문 바로가기

개발공부🌷/Spring MVC

Spring MVC 예외처리

@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