2023.02.15

김근호·2023년 2월 15일
1

Spring

목록 보기
4/9

예외처리(Exception)

Spring Boot의 예외처리 방식

Spring Boot의 예외 처리 방식은 크게 2가지가 존재

  • @ControllerAdbice를 통한 모든 Controller에서 발생 할 수 있는 예외 처리
  • @ExceptionHandler를 통한 특정 Controller의 예외 처리

@ControllerAdvice로 모든 Controller에서 발생 할 예외를 정의하고,
@ExceptionHandler를 통해 발생하는 예외 마다 처리 할 메소드를 정의한다

Exception의 자식 클래스를 크게 Checked Exception과 Unchecked Exception으로 나눌 수 있다

@ControllerAdvice, @RestControllerAdvice

@ControllerAdvice는 Spring에서 제공하는 어노테이션
@Controller나 @RestController에서 발생하는 예외를 한 곳에서 관리하고 처리할 수 있게 하는 어노테이션

  • 설정을 통해 범위 지정이 가능하며, Default 값으로 모든 Controller에 대해 예외 처리를 관리함
  • 예외 발생 시 json의 형태로 결과를 반환하기 위해서는 @RestControllerAdvice를 사용하면 됨

ExceptionHandler

  • 예외 처리 상황이 발생하면 해당 Handler로 처리하겠다고 명시하는 어노테이션
  • 어노테이션 뒤에 괄호를 붙여 어떤 ExceptionClass를 처리할지 설정 할 수 있음
    -> ExceptionHandler(OOException.class)
  • Exception.class는 최상위 클래스로 하위 세부 예외 처리 클래스로 설정한 Handler가 존재하면, 그 Handler가 우선 처리하게 되며, 처리 되지 못하는 예외 처리에 대해 ExceptionClass에서 Handling한다
  • ControllerAdvice로 설정된 클래스내에서 메소드로 정의 할 수 있지만, 각 Controller안에 설정도 가능
  • 전역 설정(@ControllerAdbice)보다 지역 설정(Controller)으로 정의한 Handler가 우선순위를 가짐


최상위 클래스의 Exception.class보다 하위의 세부적인 예외 클래스가 우선순위이다

profile
앞만 보고 나아가자!

0개의 댓글