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

마이티님의 프로필 이미지

작성한 질문수

자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]

31강. 대출 기능 개발하기

예외 날리는 이유에 대해서

24.07.26 00:49 작성

·

64

1

안녕하세요

강의 듣다가 문득 든 의문인데 코드를 짜실 때 조건이 아닌 경우에 다른처리를 하는 것이 아니라 바로 예외를 날려서 처리를 하시는데 이유가 있을까요?

혼자 짤 때는 예외처리를 하지 않고 else로 조건 분기 시켜서 따로 따로 코드 진행시키는데 바로 예외날리시는 이유가 궁금합니다

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

2024. 07. 26. 15:52

안녕하세요, 마이티님! 🙂

좋은 질문 감사드립니다.

 

보다 자세한 비교를 위해서는 작성해주신 코드 스타일을 봐야 할 것 같아요!

다만 대략적으로 라도 예외를 날리는 이유를 설명드리면 다음과 같습니다.

 

[1. 예외 상황]

일반적으로 우리가 프로그래밍을 할 때 작성하는 코드는 수많은 가정이 들어 있습니다.

가장 대표적으로 List 에서 원소를 가져오는 get() 메소드는 List 가 갖고 있는 범위 내의 원소에 접근한다는 가정으로 이루어져 있죠.

List<Integer> nums = List.of(1, 2);
nums.get(5); // 5번 인덱스를 가진 원소는 없기 때문에 예외 발생

때문에 그러한 가정이 어긋나면 예외를 던지게 됩니다.

 

비슷하게 우리가 작성한 대출 로직 역시 DB에 존재하는 유저가 DB에 존재하는 책을 빌린다는 가정이 들어 있어요. 따라서 이러한 가정에 어긋나면 예외를 던지는 것이 일반적인 처리라 할 수 있겠죠!

 

[2. HTTP 상태 코드]

또 다른 이유도 있습니다. 바로 HTTP 상태 코드인데요,

우리가 만든 API가 정상적으로 동작하지 않았을 경우에는 200 OK를 반환 하는 것이 아니라 다른 상태 코드를 반환해야 해요!

강의에서는 단순히 예외를 던져 500 Server Internal Error를 던졌지만, 상황에 따라서는 @RestControllerAdvice 와 같은 기능을 활용해 404 Not Found를 던져 조금 더 명확한 에러 상황을 알려주기도 합니다.

 

혹시 작성하신 코드를 알려주시면, 조금 더 자세한 비교와 함께 답변 드릴 수 있도록 하겠습니다.

답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏