Backend/🌱 Spring

GlobalException & ErrorException

HS0601 2026. 1. 12. 16:42

GlobalException 동작 방식

Service 또는 Contorller에서 딱 한 번 throw 발생되며 이때 ErrorException 객체가 생성되어 status, message가 객체 안에 저장된다

Service → Controller → DispatcherServlet → Stpring 아무도 try-catch 안 하고 예외는 자동으로 위로 전파되는데 이걸 Spring이 감지했다고 표현한다

GlobalExceptionHandeler는 이미 던진 ErrorException을 잡고 — catch

그 안에 있던 정보 (status, message)를 꺼내서

ResponseEntity + ApiResponse로 새 HTTP 응답을 만들어서 return 한다

 

new ErrorException vs throw new ErrorException

new ErrorException(400,"에러");

위 코드는 객체 하나 만들었을 뿐 아무 일도 안 일어난다 변수에 담지 않으면 그냥 사라진다

throw new ErrorException(400, "에러");

지금 흐름을 중단하고 이 예외를 위로 던져라는 의미인데

  • 현재 메서드 즉시 종료
  • 호출 스택을 따라 전파
  • GlobalExceptionHandler 까지 도달

 

throw가 중요한 이유

throw new AuthException();

이 한 줄이 의미하는 건

이건 정상 결과가 아니다. 실패 흐름으로 전환하라

→ 그래서 컨트롤러 return 안 타고 글로벌 예외 핸들러로 간다

 

'Backend > 🌱 Spring' 카테고리의 다른 글

Spring과 SpringBoot  (0) 2026.05.05
[스케줄링]Spring Scheduler로 임시 첨부파일 정리하기  (0) 2026.04.25
MVC(Model–View–Controller)  (0) 2026.01.12
Spring Bean 생명 주기  (1) 2026.01.12
[Spring]API 로깅  (0) 2025.08.21