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