기존에는 스프링 부트에서 MVC 구조를 설계할 때, 상단과 같이 try catch문을 사용해서 예외를 처리하였다.
그런데 만약 try catch문을 사용해서 예외를 처리할 때 클래스 안에 열개의 메서드가 존재한다면, 메서드마다 try catch문 하나씩 총 열개의 try catch문이 존재하게 된다.
이때, 위의 코드와 같이 @ExceptionHandler 라는 스프링 부트에서 제공해주는 기능을 사용하면 열개의 try-catch 문을 단 한 개의 @Exceptionhandler 로 대체가 가능해진다.
또한 위 코드와 같이 클래스 단위가 아닌 프로젝트 단위로 전역으로 @Exceptionhandler를 설정하는 것도 가능하다.
전역으로 @Exceptionhandler를 정의하게 되면 해당 프로젝트에서 발생하는 모든 예외에 대한 처리가 단 한개의 메서드로 가능해진다.
사실상 수십, 많게는 수 백개의 try-catch 문을 한 개의 메서드로 대체가 가능한 매우 효율적이고 재사용성이 있는 방식이라고 생각한다.