프로그램의 흐름을 보면
사용자가 서버에 요청을 할 경우
was → filter → 디스패처 서블릿
→ 컨트롤러 → 서비스 → 리파지토리 → 퍼시스트 컨텍스트 → 데이터베이스
위와 같은 식의 흐름으로 데이터베이스에 도달하고 원하는 정보를
다시 역순으로 진행하여 전달하는 방식입니다.
이 과정 속에서 오류가 발생할 경우, 개발자는 예외 처리를 통해 오류를 정리할 수 있어야 합니다.
스프링에서 예외처리는 디스패처 서블릿과 같은 단에 있는
ControllerAdvice 가 작업을 진행하게 됩니다.
ControllerAdvice
예외 처리, 데이터 바인딩 문제 처리, 공통 모델 속성 추가와 같은 역할을 맡고 있습니다.
특정 컨트롤러에 한정되지 않고, 어플리케이션 전역에 적용되는 기능입니다.
예시 코드들을 통해 예외 처리를 배워봤습니다.

main 클래스 입니다.
프로그램이 시작될 때 위에서부터 차례대로 생성되는 순서입니다.
ControllerAdvice의 경우 스프링에서 제공하는 어노테션 기능이지만 직접 만들어 사용해봤습니다.

ControllerAdvice를 통해 앱 전역에서 발생하는 예외를 처리할 수 있습니다.
Repository에서 강제로 오류를 발생시켜 보겠습니다.

throw를 통해 리파지토리에서 발생한 오류를 service에 위임하게 됩니다.
service와 Controller에서 try/catch를 사용하지 않으면 해당 오류는 자동으로 throw가 되어
CotrollerAdvice가 위임하게되어 발생한 오류를 처리하게 됩니다.
Share article