인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

CommitAndRun님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

주문, 주문상품 엔티티 개발

NotEnoughStockException 커스텀 Exception을 만든 이유가 궁금합니다.

작성

·

85

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
강의에서 NotEnoughStockException 을 새로 만드셨는데,

IllegalArgumentException을 사용하는 것은 어색한가요? 처음엔 도메인에서 exception 처리 때문에 별도로 생성한 것이겠지하고, 넘어갔는데 주문 취소의 배송완료된 상태에서는 IllegalStateException 을 사용하셔서, 어떻게 구분하여 사용하는 것이 좋을지 궁금합니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. CommitAndRun님, 질문해 주셔서 감사합니다.

스프링과 JPA 강의에서 NotEnoughStockException과 같은 커스텀 예외를 만드는 이유는 보다 명확하고 구체적인 예외 처리를 가능하게 하기 위함입니다. 일반적으로 IllegalArgumentException이나 IllegalStateException은 많은 경우에 사용될 수 있지만, 특정 비즈니스 로직에 맞는 예외를 정의함으로써 코드의 가독성과 유지 보수성을 크게 향상시킬 수 있습니다.

구체적인 예외의 필요성

  • 명확성: 커스텀 예외를 사용하면 어떤 일이 잘못됐는지 한눈에 알 수 있습니다. 예를 들어, NotEnoughStockException은 재고가 부족할 때 발생함을 명확히 알려줍니다.

  • 비즈니스 로직 적용: 식별이 명확한 예외를 사용하면, 비즈니스 로직이 변할 때 개발자가 더욱 쉽게 코드를 수정할 수 있습니다.

  • 코드의 의도 표현: 팀원 간의 협업 상황에서도 커스텀 예외는 코드의 의도를 쉽게 파악할 수 있게 해줍니다.

언제 어떤 예외를 사용하는 게 좋을까요?

  • IllegalArgumentException: 메서드 인자에 부적절한 값이 넘어왔을 때 주로 사용합니다.
  • IllegalStateException: 객체가 특정 작업을 수행하기에 적절하지 않은 상태일 때 사용합니다.
  • 커스텀 예외: 도메인 로직에서 특정한 상황을 제대로 설명하고 처리할 필요가 있을 때 사용합니다.

이 내용을 고려하여 강의에서는 다양한 예외를 사용하였으며, 상황에 맞는 예외를 정의함으로써 발생 가능한 오류를 효율적으로 처리하려고 합니다.

질문을 좀 더 자세히 살펴보고 싶으시다면, 아래 유사한 내용의 게시물을 참고하시길 권장합니다:

  1. NotEnoughStockException에 대해서 조금만 더 자세한 설명 부탁드려도 될까요?
  2. 재고수량 초과 주문 테스트 시 에러 발생 + 주문 취소 테스트 시 에러 발생

이해를 돕기 위해 관련 예외 처리에 관한 강의에서의 설명을 복습해 보시는 것도 좋을 것 같아요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.