24.07.26 00:49 작성
·
80
답변 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를 던져 조금 더 명확한 에러 상황을 알려주기도 합니다.
혹시 작성하신 코드를 알려주시면, 조금 더 자세한 비교와 함께 답변 드릴 수 있도록 하겠습니다.
답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏