Search

Exception

Exception Handler란?

Spring 프레임워크에서 제공하는 어노테이션으로, 특정 예외가 발생했을 때 그 예외를 처리하는 메서드를 지정하는데 사용한다. 주로 Controller나 ControllerAdvice 클래스 내에서 사용되며, 발생한 예외를 잡아 적절한 응답을 반환할 수 있도록 해준다.

Exception Handler 특징

특정 예외 처리
@ExceptionHandler는 특정 예외 클래스를 인자로 받아, 해당 예외가 발생했을 때 실행될 메서드를 정의하며, 여러 예외를 한 메서드에서 처리 할 수도 있다.
컨트롤러 범위
이 어노테이션 해당 컨트롤러 클래스에서 발생하는 예외에만 적용된다. 하지만, @ControllerAdvice와 함께 사용하면 애플리케이션 전체의 예외를 전역적으로 처리할 수 있다.
맞춤형 응답
@ExceptionHandler를 사용하여 발생한 예외에 대해 사용자 정의 응답을 생성할 수 있다. 예를 들어 JSON형식의 에러 메시지를 반환하거나 특정 HTTP 상태 코드를 설정 할 수 있다.
예외의 계층 구조 처리
예외의 계층 구조에 따라 더 구체적인 예외부터 처리되며, 만약 특정 예외에 대한 핸들러가 없다면, 부모 클래스의 예외 핸들러가 호출 될 수 있다.
간편한 예외 관리
@ExceptionHandler를 사용하면 예외 처리 로직을 분리하여 컨트롤러 코드의 가독성을 높이고, 다양한 예외 상황에 맞춰 일관된 에러 응답을 제공할 수 있다.

Exception Handler가 필요한 이유

Exception Handler가 없는 경우 Default Handler가 사용되며, 500 Error Code와 Trace 포함 등을 제어할 수 없다. 그렇기에 Exception Handler는 애플리케이션에서 예외가 발생했을 때, 이를 적절하게 처리하고, 사용자에게 적절한 응답을 제공하기 위해서 필요하다.

Exception Handler 우선 순위

RestException이 GlobalException보다 우선순위가 높다.