Spring MVC(예외 처리)

Rina's·2023년 6월 13일

코드스테이츠

목록 보기
44/96

예외 처리

@ExceptionHandler
예외값 클래스 객체예외처리 핸들러 메서드와 연결시켜 처리

@RestControllerAdvice
예외값 클래스 객체예외처리 공통 클래스와 연결시켜 처리

@ExceptionHandler

Controller(헨들러 메서드)에서 예외를 처리하게 해주는 애너테이션

특정 예외를 매개변수로 받는 예외처리 메서드에 @ExceptionHandler를 설정하여
예외처리 로직을 실행한다

getBindingResult().getFieldErrors() 로 전체 에러관련 데이터를 받아온다

ErrorResponse 클래스를 만들어 필요한 데이터만 추출해 리턴해 준다

@RestControllerAdvice

@ExceptionHandler @InitBinder @ModelAttribute
적용 메서드를 공유시켜주는 애너테이션
@ResponseBody기능을 포함하여 리턴 객체가 ResponseEntity 타입이 아니어도 상관 없다! 즉 래핑이 필요 없다!

GlobalExceptionAdvice 클래스
예외를 매칭시켜 예외처리 메서드를 호출, 리턴 값을 핸들러로 리턴


ErrorResponse 클래스

각각의 예외처리 객체 생성자 구현(추상화, 메서드 통일, null값을 통한 역활 명료화)
각각의 예외처리 클래스 리턴 객체 생성 메서드 구현

@ResponseStatus, HTTP Status를 HTTP Response에 포함

throw

체크 예외 : 처리를 해야 하는 예외
언체크 예외 처리를 할 필요가 없는 예외

예외를 발생시키고 싶은 핸들러 메서드에 적용
throw new RuntimeException("Not found member");

예외처리 클래스에 처리 메서드를 추가

Custom Exception

  1. Custom Exception의 세부값과 메세지를 열거형으로 구현
  2. 동적으로 Custom Exception를 받을 비지니스로직Exception 구현
  3. 비지니스 로직에 throw Exception
  4. 공통예외처리 클래스에 비지니스로직Exception 메서드 구현

주의
@RestControllerAdvice 적용 클래스에서 @ResponseStatus는 한가지 HttpStatus만 사용가능
비지니스로직Exception을 사용하여 동적으로 여러 HttpStatus를 적용이 필요하면 ResponseEntity를 사용할 것

profile
갭린이 리나

0개의 댓글