예외 날리는 이유에 대해서
143
작성한 질문수 22
안녕하세요
강의 듣다가 문득 든 의문인데 코드를 짜실 때 조건이 아닌 경우에 다른처리를 하는 것이 아니라 바로 예외를 날려서 처리를 하시는데 이유가 있을까요?
혼자 짤 때는 예외처리를 하지 않고 else로 조건 분기 시켜서 따로 따로 코드 진행시키는데 바로 예외날리시는 이유가 궁금합니다
답변 1
0
안녕하세요, 마이티님! 🙂
좋은 질문 감사드립니다.
보다 자세한 비교를 위해서는 작성해주신 코드 스타일을 봐야 할 것 같아요!
다만 대략적으로 라도 예외를 날리는 이유를 설명드리면 다음과 같습니다.
[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를 던져 조금 더 명확한 에러 상황을 알려주기도 합니다.
혹시 작성하신 코드를 알려주시면, 조금 더 자세한 비교와 함께 답변 드릴 수 있도록 하겠습니다.
답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
패키지 구분에 대해 궁금한게 있습니다
0
34
2
리액트 관련 질문이 있습니다.
0
69
2
스프링부트 버전
0
87
2
7강 강의를 들으려고 했는데 오류가 나서 서버가 안 켜지는거 같아요.
0
66
2
33강. UserLoanHistory의 관계성에 대한 질문
1
58
2
Java JDK 버전 문의의 건
0
144
2
ec2 에서 Linux버전이 달라져서 설치가 안되는것 같은데 자료 최신화좀 해주세요.
0
96
3
h2 console 접속했을 테이블 질문
1
70
1
ec2 서버에서 스프링 실행도 되고 인바운드 설정까지 했는데 index.html 안됨
0
83
2
15강. updateUser() 질문
0
57
2
깃허브 질
0
91
2
여기까지 다 끝냈다고 하셨는데
0
83
2
왜안될까요
0
73
2
MySQL 창이안ㄴ뜹니다
0
59
2
포스트맨
0
55
1
spring 개념적인 질문
0
76
2
인텔리제이 샘플코드 실행 안됨 오류
0
150
2
aws 배포할때 .env 파일에 저장한 환경변수에 관하여 여쭤볼게 있습니다
0
90
1
마이그레이션 오류입니다.
0
179
3
Whitelabel Error Page 오류가 났습니다.
0
182
2
안녕하십니까! 오류가 났습니다.. 도와주세요 ㅜㅜ
1
101
3
궁금한게 있습니다.
0
64
2
DTO 관련
0
74
2
궁금한게 있습니다!
0
73
2





