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

이성훈님의 프로필 이미지
이성훈

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

@ControllerAdvice

@ExceptionHandler를 제대로 이해한건지 모르겠습니다.

해결된 질문

작성

·

317

·

수정됨

0

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

[질문 내용]
@ExceptionHandler 부분을 보고있는데 만약 회원가입 서비스에서 아이디 중복을 확인하는 서비스를 만든다고 가정했을때 중복이면 커스텀 예외를 만들어서 날려준다면.

  1. 예외를 @ExceptionHandler써서 처리하는걸로 알고있습니다. 그러면 예외가 throw된 service단에서 처리되는건가요?

  2. 이게 맞다면 api 내에서 throw로 커스텀 에러를 날리고 @exceptionHandler 을 사용한다면 커스텀 에러들이 발생한곳에서 처리되는건지 궁금합니다.

3. 커스텀 예외를 만들시 extends RuntimeException를 하는게 controller등등에 예외가 전파되지 않기 위해서인걸로 아는데 그러면 예외를 runtime 에러로 만들었을 시 try catch문은 필요가 없는게 맞나요? 몇몇 코드를 찾아보니 @ExceptionHandler를 사용하고 runtime에러여도 trycatch를 굳이 쓰는 경우도 있던데 코드의 가독성을 위해서 넣은건지 궁금합니다.

4. 아이디 중복같은 경우 굳이 예외로 던지지 않아도 해결할 수 있는데 예외를 던지는 이유는 로그라던가 코드의 안정성을 위한건지도 궁금합니다.

  1. 그리고 커스텀 에러를 체크에러로 만들어서 처리하는 경우 에러를 @ExceptionHandler로 해결해도 전파되던데 이러한 경우는 어째서 인지 궁금합니다!

6.spring data jpa 에서는 자동으로 spring이 추상화한 예외를 날려주는걸로 아는데 그러면

DataIntegrityViolationException.class 예외가 터졌을때 (외래키 중복 , 아이디 중복)

두개의 오류를 각기 다른 방법으로 처리하고싶으면 어떻게 하나요? 에러코드나 스프링 메뉴얼을 분석해서 그 예외에 종속된 사용자 지정 예외를 만드나요?

그러면 결국 그냥 예외가 터지는 try catch 부분에서 if 문을 짜서 그 에러코드를 가진 예외가 터졌을시에 대한것을 처리해주면 되는거 아닌지 헷갈립니다..

그리고 그게 아니면 DataIntegrityViolationException.class 예외가 터졌을 시 해결하는 코드를 작성했는데 DataIntegrityViolationException.class에 종속된 다른 오류가 터진거면 어떻게 할지 잘 모르겠습니다..

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

  1. 해당 질문은 강의 내용과 관련된 질문이 맞아요.
  2. 인프런의 질문 게시판과 자주 하는 질문에 해당 내용은 없는 것 같아요.
  3. 질문 잘하기 메뉴얼을 확인해보진 않았지만, 혹시라도 궁금한 점이 있으면 알려주세요.

@ExceptionHandler 어노테이션은 예외 처리를 하는 것으로, 회원가입 서비스 등에서 예외가 발생했을 때 처리하는 방법 중 하나입니다. 이 어노테이션을 사용하면 예외가 발생한 메소드가 있는 컨트롤러에서 예외를 처리할 수 있습니다.

커스텀 예외를 만들 때, 일반적으로 RuntimeException을 상속받는 것은 해당 예외를 checked 예외가 아닌 unchecked 예외로 만들기 위해서입니다. 이렇게 하면 예외를 throws하지 않아도 되어 편리하게 사용할 수 있습니다.

try-catch 문은 예외를 처리하는 방법 중 하나이며, try 블록 안에서 예외가 발생할 수 있는 코드를 넣고 catch 블록에서 예외를 처리하는 코드를 작성합니다. 때에 따라서 try-catch 문을 사용하는 것이 코드의 가독성을 높이는 데 도움이 될 수 있습니다. 예외 처리에 대한 정확한 판단은 개발자의 판단에 따라 다를 수 있습니다.

더 자세한 내용이나 코드에 대한 구체적인 예시가 있다면 알려주세요. 도움을 드릴 수 있도록 최선을 다하겠습니다.

이성훈님의 프로필 이미지
이성훈

작성한 질문수

질문하기