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

blackhole124님의 프로필 이미지

작성한 질문수

스프링 핵심 원리 - 고급편

로그 추적기 V1 - 적용

예외 처리 부분 질문 있습니다.

작성

·

73

0

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

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

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

[질문 내용]
항상 강의 잘 보고 있습니다.

감사합니다.

강사님 자료 중에
"throw e: 예외를 꼭 다시 던져주어야 한다. 그렇지 않으면 여기서 예외를 먹어버리고, 이후에 정상 흐름으로 동 작한다. 로그는 애플리케이션에 흐름에 영향을 주면 안된다. 로그 때문에 예외가 사라지면 안된다"

라는 문장에서

예외를 다시 던져준다와 예외를 먹어버린다 등의 표현이 잘 이해가 안되는데 설명 부탁드립니다.

감사합니다

 

답변 1

0

안녕하세요. blackhole124님, 공식 서포터즈 y2gcoder입니다.

image.png

 

15페이지의 OrderControllerV1.request() 설명 마지막 부분(p.16)을 말씀하시는 것으로 보입니다.

try-catch 문은 try 문 내에서 catch 문 에 정의한 예외가 발생하면 해당 예외를 catch 문 내에서 처리 후 정상 흐름으로 반환합니다.

근데 저희는 해당 예외에 대한 로그를 남기고, 예외는 다시 던져줘야 합니다. throw 라는 지시어에서도 보이듯이 해당 예외를 다시 발생하는 것을 예외를 던져준다고 표현합니다 🙂 그리고 catch 문에서 throw e로 해당 예외를 다시 발생시켜 던져주지 않는다면 try-catch 문 내에서 해당 예외를 처리한 것으로 간주하고 정상흐름으로 작동하기 때문에, 이는 저희가 원하는 행동과 다릅니다.

그래서 말을 바꿔보자면 try-catch 문을 이용해 해당 예외를 잡아서 로그만 작성하고 다시 해당 예외를 던져 해당 예외가 try-catch 문 내에서 처리되지 않게 하기 위해서라고 이해해주시면 감사하겠습니다.

 

 

 

감사합니다.