Spring @ExceptionHandler을 이용한 예외 처리

말하는 감자·2025년 3월 26일

내일배움캠프

목록 보기
29/73
post-thumbnail

일단 가장 먼저 생각나는게 예외처리..........................를 공통적으로 적용하는 것이다....

예외 처리

프로젝트 전역에서 예외를 한 곳에서 처리하는 어노테이션

@ControllerAdvice 과제 예시로 나온 공통 예외처리 클래스에서 해당 어노테이션을 사용하는 것을 보았다.

@ControllerAdvice

📌 예외를 한 곳에서 처리해주는 도구
보통 웹 서비스에서 오류가 발생하면,

  • 페이지를 보여주는 경우 에러 페이지를 띄우거나 => @ControllerAdvice
  • API를 사용하는 경우 JSON 형태로 에러 응답을 보내야 한다. => @RestControllerAdvice

이때, 컨트롤러마다 따로따로 예외 처리하는 대신, 한 곳에서 모아서 처리할 수 있도록 해주는 게 @ControllerAdvice@RestControllerAdvice





사용 방법

이런식으로 기랑 다른 패키지에 있는 함수에 throw 필요한 오류 이름
하면 함수 이름이 작동되는 방식이다.





@ExceptionHandler

특정 컨트롤러 내부에서 발생한 예외를 처리하는 어노테이션


### 📌 특징 - @Controller 또는 @RestController 안에서만 동작함 - 특정 예외가 발생했을 때, 해당 메서드에서 예외를 처리 - 해당 컨트롤러 내부에서만 적용됨 (전역 적용 ❌)





어노테이션적용 범위사용 위치특징
@ExceptionHandler해당 컨트롤러 내부컨트롤러 클래스 (@Controller, @RestController)해당 컨트롤러에서 발생한 예외만 처리
@ControllerAdvice / @RestControllerAdvice프로젝트 전역별도 예외 처리 클래스모든 컨트롤러에서 발생한 예외를 처리





✅ 결론

@RestControllerAdvice는 패키지가 달라도 모든 컨트롤러의 예외를 잡아줄 수 있음!
✔ 컨트롤러에서 throws 오류종류이름(400, "오류!") 하면 자동으로 @ExceptionHandler 실행됨
✔ 이제 컨트롤러마다 예외 처리 로직을 반복할 필요 없이, 한 곳에서 처리 가능

@RestControllerAdvice를 이용하면 프로젝트 전체의 예외 처리를 깔끔하게 관리할 수 있다

profile
대충 데굴데굴 굴러가는 개발?자

0개의 댓글