[Spring Boot] 예외처리를 왜 해야하고 어떻게 처리할까?
예외와 오류에 대해 알아보자.
먼저 예외(Exception) 과 오류(Error)는 다르다는 것을 명심하자.
오류(Error)는 시스템이 정상 활동 되다가 갑자기 종료되거나 서비스가 작동작하지 않고 먹통 상태가 되는 심각한 영향을 준다.
오류 처리를 왜 해야하는가?
2가지만 명심하자.
- 시간
- 돈
오류 해결에 의해 시간과 돈이 들어간다. 서비스가 먹통이 되면 엄청난 손실이 올 것이다.
예외(Exception)는 개발자 즉, 프로그램을 만든 사람의 실수에서 나온다. 개발 당시에 생각하지 못한 부분에서 프로그램에 잘못된 영향을 준다.
예외 처리를 왜 해야하는가?
- 사용자에 임시적인 가이드를 제공
예외도 서비스를 사용하는 사람 입장에서 불편함이 있겠지만 프로그램이 완전히 죽는 것 보단 나을 것이다.
예외, Error 처리 방법
- Error Response는 객체를 만들어 통일하게 사용한다.
- @ControlAdivce를 통해 모든 예외를 한곳에서 핸들링 한다. (전역)
각각의 Controller 마다 에러처리를 만들게 되면 유지보수하기 힘들어진다. 하지만 @ControlAdivce를 통해 통일성 있게 처리하면 통일하게 예외처리가 가능해진다.
RestController의 에러는 @RestControllerAdvice로 핸들링 할 수 있다.
- Error Code를 정의하여 처리한다.
예외를 던진 때의 메시지와 에러 타입들이 다를 것이고 동일 한 부분도 있을 것이다. 하지만 흩어져 있는 코드 하나의 열거타입에 관리하여 이를 통해 사용하면 통일성 있고 명확하게 처리할 수 있을 것이다.
- 요구사항에 맞지 않는 경우에는 Business Exception을 따로 만들어 처리한다.
Business Exception을 최상위로 만들고 상속받아 사용하자.
최상위 클래스를 상속받아 사용하면 각자의 예외에 대한 책임을 가질 수 있고 가독성도 좋아진다.
또한 예외 처리할 때 최상위 객체를 사용하여 통일하게 예외를 처리할 수 있다.
.