스프링부트 예외 처리 (Exception)

김성태·2022년 8월 25일
0

스프링부트

목록 보기
15/15

스프링 부트의 예외 처리 방식

스프링 부트의 예외 처리 방식은 크게 2가지가 존재

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

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

예외 클래스

모든 예외 클래스는 Throwable 클래스를 상속 받고 있음

Exception은 수많은 자식 클래스가 있음
RuntimeException은 Unchecked Exception이며, 그 외 Exception은 Checked Exception으로 볼 수 있음

Checked ExceptionUnchecked Exception
처리여부반드시 예외 처리 필요명시적 처리 강제하지 않음
확인시점컴파일 단계실행 중 단계
예외발생시 트랜잭션롤백하지 않음롤백함
대표 예외IOException
SQLException
NullPointerException
Illegal ArgumentException
IndexOutOfBoundException
SystemException

@ControllerAdvice, @RestControllerAdvice

@ControllerAdvice는 Spring에서 제공하는 어노테이션

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

설정을 통해 범위 지정이 가능하며, Default 값으로 모든 Controller에 대해 예외 처리를 관리함
- @RestControllerAdvice(basePackages = "com.naver")와 같이 패키지 범위를 설정할 수 있음

예외 발생 시 json의 형태로 결과를 반환하기 위해서는 @RestControllerAdvice를 사용하면 됨

0개의 댓글