해결된 질문
작성
·
317
·
수정됨
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
@ExceptionHandler 부분을 보고있는데 만약 회원가입 서비스에서 아이디 중복을 확인하는 서비스를 만든다고 가정했을때 중복이면 커스텀 예외를 만들어서 날려준다면.
예외를 @ExceptionHandler써서 처리하는걸로 알고있습니다. 그러면 예외가 throw된 service단에서 처리되는건가요?
이게 맞다면 api 내에서 throw로 커스텀 에러를 날리고 @exceptionHandler 을 사용한다면 커스텀 에러들이 발생한곳에서 처리되는건지 궁금합니다.
3. 커스텀 예외를 만들시 extends RuntimeException를 하는게 controller등등에 예외가 전파되지 않기 위해서인걸로 아는데 그러면 예외를 runtime 에러로 만들었을 시 try catch문은 필요가 없는게 맞나요? 몇몇 코드를 찾아보니 @ExceptionHandler를 사용하고 runtime에러여도 trycatch를 굳이 쓰는 경우도 있던데 코드의 가독성을 위해서 넣은건지 궁금합니다.
4. 아이디 중복같은 경우 굳이 예외로 던지지 않아도 해결할 수 있는데 예외를 던지는 이유는 로그라던가 코드의 안정성을 위한건지도 궁금합니다.
그리고 커스텀 에러를 체크에러로 만들어서 처리하는 경우 에러를 @ExceptionHandler로 해결해도 전파되던데 이러한 경우는 어째서 인지 궁금합니다!
6.spring data jpa 에서는 자동으로 spring이 추상화한 예외를 날려주는걸로 아는데 그러면
DataIntegrityViolationException.class 예외가 터졌을때 (외래키 중복 , 아이디 중복)
두개의 오류를 각기 다른 방법으로 처리하고싶으면 어떻게 하나요? 에러코드나 스프링 메뉴얼을 분석해서 그 예외에 종속된 사용자 지정 예외를 만드나요?
그러면 결국 그냥 예외가 터지는 try catch 부분에서 if 문을 짜서 그 에러코드를 가진 예외가 터졌을시에 대한것을 처리해주면 되는거 아닌지 헷갈립니다..
그리고 그게 아니면 DataIntegrityViolationException.class 예외가 터졌을 시 해결하는 코드를 작성했는데 DataIntegrityViolationException.class에 종속된 다른 오류가 터진거면 어떻게 할지 잘 모르겠습니다..
답변 1
0
안녕하세요, 인프런 AI 인턴이에요.
@ExceptionHandler 어노테이션은 예외 처리를 하는 것으로, 회원가입 서비스 등에서 예외가 발생했을 때 처리하는 방법 중 하나입니다. 이 어노테이션을 사용하면 예외가 발생한 메소드가 있는 컨트롤러에서 예외를 처리할 수 있습니다.
커스텀 예외를 만들 때, 일반적으로 RuntimeException을 상속받는 것은 해당 예외를 checked 예외가 아닌 unchecked 예외로 만들기 위해서입니다. 이렇게 하면 예외를 throws하지 않아도 되어 편리하게 사용할 수 있습니다.
try-catch 문은 예외를 처리하는 방법 중 하나이며, try 블록 안에서 예외가 발생할 수 있는 코드를 넣고 catch 블록에서 예외를 처리하는 코드를 작성합니다. 때에 따라서 try-catch 문을 사용하는 것이 코드의 가독성을 높이는 데 도움이 될 수 있습니다. 예외 처리에 대한 정확한 판단은 개발자의 판단에 따라 다를 수 있습니다.
더 자세한 내용이나 코드에 대한 구체적인 예시가 있다면 알려주세요. 도움을 드릴 수 있도록 최선을 다하겠습니다.