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

명수찬님의 프로필 이미지
명수찬

작성한 질문수

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

회원 서비스 개발

예외처리 관련 질문

작성

·

306

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

안녕하세요. 좋은 강의 항상 감사드립니다.

 

MemberService/validateDuplicateMember 메소드에서

 

throw new IllegalStateException("이미 존재하는 회원입니다.");

 

로 예외를 던지는데요.

 

예외처리에 대해서 공부를 했는데도 의문이 풀리지 않아 질문을 남기게 됩니다.

 

만약에 메소드 자체가 throw로 Exception을 던지게 되면 그 메소드를 호출한 메소드에서 예외를 잡아줘야 하고, 끝까지 예외를 잡지 않(못)으면 스레드 자체가 종료되어 버리잖아요?

 

그래서 해당 메소드의 내부에서 if 문의 조건을 걸고, 그 조건에 해당하면 바로 예외를 던진 것으로 보이는데, 제가 궁금한 부분은 "throw new IllegalStateException"으로 예외를 던졌으나 return을 즉시 반환한다거나 Rollback 등, 즉 예외처리 로직을 기입하지 않았는데... 그렇다면 아무 예외처리 로직 없는 저 예외처리는 어떻게 작동되는 건가요..?

 

예외처리를 던진 메소드 영역의 메모리만 꺼버리는 건지.. 도움 부탁드립니다!

답변 1

0

안녕하세요. 명수찬님, 공식 서포터즈 OMG입니다.

질문 주신 내용과 관련하여 아래 영한님의 답변에 질문에 대한 답변이 포함되어 있어 링크 남깁니다.

참고부탁드려요~

https://www.inflearn.com/questions/77596


감사합니다.

명수찬님의 프로필 이미지
명수찬
질문자

안녕하세요 OMG님. 추가적으로 질문 드릴 게 있습니다.

 

http://localhost/main

http://localhost/login

http://localhost/board

 

이런식으로 HTTP 요청이 들어오면 -> 웹서버는 각 요청 마다 별도의 쓰레드(위의 경우 3개 생성)를 생성해서 실행하고

 

-> 예외가 넘어오면 해당 쓰레드에 영향을 주는데 -> 웹 서버에 예외 처리 로직이 들어 있다

 

라고 정리가 되는데요.

 

흠.. 하지만 실무에서 가장 신경써야 하는 부분이 예외처리인데, 실무에서도 저렇게 예외를 throw new 해서 잡나요? 

 

그리고 혹시 웹서버의 예외처리 로직을 검색해봐도 자세한 내용을 볼 수가 없어서 저 예외 처리 로직이 어떤 느낌인지 알고 싶은데 검색할 수 있는 키워드 정보나 설명 가능하실까요?

 

감사합니다.

실무 상관 없이 throw new Ex 가 안티패턴인지 아닌지가 중요할거같은데요,

스프링의 경우 @ControllerAdvice로 전역 예외처리 할 때 throw new - 로 발생한 예외도 같이 처리 할 수 있기 때문에 별 문제가 되진 않는다고 생각합니다.

예외처리 관련하여  MVC2편 예외처리 강의를 참고해주세요. 

 

웹서버의 예외처리 관련하여 검색해봐도 원하시는 내용은 못찾겠네요.

아시는 분은 답변 부탁드립니다.

명수찬님의 프로필 이미지
명수찬

작성한 질문수

질문하기