작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
229
·
수정됨
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
예외를 던지거나 잡아서 처리한다는 내용에 대해 질문이 있는데요..
어떻게 예외를 처리해야하는지 그 부분이 현재까지 본 강의로는 조금 추상적이라 이해가 부족한데 혹시 조금더 설명 해주실수 있으실까요?
try catch 를 이용해서 예외 발생시 롤백을 하고 어떤 응답값을 리턴한다 같은 처리를 이야기 하는걸까요?
만약 그렇다면 @Transactional을 하는 경우는 롤백은 되지만 응답에 대한 처리는 어떻게 할 수 있을까요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
gogo님의 질문에 대해, 예외 처리와 관련하여 스프링에서 제공하는 다양한 방식을 설명할 수 있는 자료가 있어 안내드립니다.
try, catch로 예외 처리하기
Java의 기본적인 예외 처리 방법으로, try 블록 내에서 실행되는 코드가 예외를 던질 경우 catch 블록이 해당 예외를 잡아서 처리합니다. 이때, 트랜잭션이 적용된 메소드 내에서 예외가 발생하고 catch 블록에서 처리하게 되면, 트랜잭션은 롤백되지 않고 정상적으로 커밋되는 것으로 간주됩니다. 하지만, 예외를 catch 하고 다시 던지지 않는다면, 스프링 트랜잭션에서는 예외가 발생했음을 인지하지 못하기 때문에 롤백을 하지 않습니다.
@Transactional과 예외 처리
@Transactional 어노테이션이 붙은 메서드에서 발생한 예외는 기본적으로 런타임 예외(RuntimeException) 발생 시에만 롤백이 이루어집니다. 하지만, @Transactional 어노테이션의 rollbackFor 속성을 사용하여 특정 예외 발생 시 트랜잭션을 롤백하도록 설정할 수 있습니다.
응답 처리에 있어서는 @Transactional이 적용된 비즈니스 로직에서 예외가 처리되고 나면, 해당 예외는 컨트롤러까지 전파됩니다. 컨트롤러에서는 이 예외를 받아 사용자에게 적절한 응답을 반환할 수 있습니다. 여기서 @ControllerAdvice와 @ExceptionHandler 등을 사용하여 예외를 전역적으로 처리하고 응답할 수 있습니다.
유사한 맥락으로 질문과 관련된 링크를 참고하시길 추천드립니다:
스프링 트랜잭션과 롤백 처리에서는 try, catch, throw, throws에 관한 질문을 다루고 있는데, 해당 논의가 gogo님의 이해를 돕는데 도움이 될 수 있습니다.
에러 처리에 대해 질문이 있습니다.에서는 에러 처리의 다양한 방법과 실무에서의 활용에 대한 김영한 강사님의 답변을 확인할 수 있습니다.
이러한 문서들을 통해 예외 처리의 기본부터 실무 적용까지의 과정에 대한 이해를 넓힐 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.