커피와 개발자

예외처리 (Exception Handling) 본문

프로젝트/Spring Boot

예외처리 (Exception Handling)

광박이 2022. 10. 11. 16:21
728x90

예외처리(Exception Handling)

스프링은 예외처리를 위해 다양하고 막강한 어노테이션을 제공하고 있습니다. 예외처리 핸들링(Exception Handling)은 일관성 있는 코드 스타일을 유지하면서 Exception을 처리하는 방법입니다.

Error Response 객체

Error Response 객체는 항상 동일한 ErrorResponse를 가져야 합니다. 그렇지 않으면 클라이언트에서 예외 처리를 항상 동일한 로직으로 처리하기 어렵습니다.
Error Response 객체를 유연하게 처리하기 위해서 Map<K, V> 형식으로 처리할 때도 있습니다. (비추천)

Error Response 객체 Example :

에러 코드는 enum 타입으로 한 곳에서 관리합니다. 에러 코드가 전체적으로 흩어져있을 경우 코드, 메시지의 중복을 방지하기 어렵고 전체적으로 관리하는 것이 매우 어렵습니다.
코드도 동일하게 enum으로 관리하는 것도 좋습니다. 에러 메시지는 Common과 각 도메인별로 관리하는 것이 효율적이며, 유니크한 코드값도 규칙을 정하는 것이 좋습니다.
우리는 우선 error 패키지를 생성하고 enum으로 ErrorCode.java를 작성하고 ErrorResponse.java를 작성합니다.

Error Response 객체 JSON :

  • statushttp status code를 작성합니다. header 정보에도 포함된 정보이니 굳이 추가하지 않아도 됩니다.
  • code에러에 할당되는 유니크한 코드값입니다.
  • message에러에 대한 message를 작성합니다.
  • errors요청 값에 대한 field, value, reason 작성합니다. 일반적으로 @Valid 어노테이션으로 JSR 303: Bean Validation에 대한 검증을 진행합니다.
    만약 errors에 바인딩된 결과가 없을 경우 null이 아니라 빈 배열 []을 응답해줍니다. null 객체는 절대 리턴하지 않습니다. null이 의미하는 것이 애매합니다.

Business Exception 처리

Business Exception은 요구사항에 맞지 않을 경우 발생시키는 Exception을 말합니다. 예를 들어 쇼핑몰에서 구매하는 상품에 쿠폰을 사용하려고 할 때, 이미 사용된 쿠폰의 경우 적용되지 않고 구매 진행을 할 수 없는데, 이런 경우에는 적절한 Exception을 발생시키고 로직을 종료시켜야 합니다.
즉, 요구사항에 맞게 개발자가 직접 Exception을 발생시키는 것들이 Business Exception이라고 할 수 있습니다.

Business Exception Ex

ample :

error 패키지에 exception 패키지를 생성한 후, BusinessException.java와 사용자 Exception 중 최상위 BusinessException을 상속받는 InvalidValueException, EntityNotFoundExceptuon를 생성합니다.

728x90

'프로젝트 > Spring Boot' 카테고리의 다른 글

타임리프(Thymeleaf)  (0) 2022.10.11
에러 페이지(Error page)  (0) 2022.10.11
Mybatis 적용  (0) 2022.10.11
DataBase 연동 (MariaDB, HikariCP)  (0) 2022.10.11
Argument Resolver 설정  (0) 2022.10.11
Comments