Inflearn brand logo image

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

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

작성한 질문수

생산성을 향상시키는 스프링부트 기반의 API 템플릿 프로젝트 구현

전역 에러 처리 (1)

전역에러처리질문

작성

·

40

0

전역에러처리에서 궁금한게 errorCode라는게무엇일까요 httpStatus로 에러상태코드를알수있는데 에러코드가 따로필요한 이유와 그렇다면 강의에서처럼 구성할경우 enum으로 모든 httpstatus에 따라 에러코드를 enum으로 작성해줘야되는건가요?

답변 2

0

구파고님의 프로필 이미지
구파고
지식공유자

안녕하세요!

http status로 상태는 알 수 있지만 정확히 어떤 에러가 발생한건지는 알기가 쉽지 않습니다.

API에서 400 http status를 반환하는 예외가 3개가 있다면 어떤 오류가 발생했는지 알기가 쉽지 않습니다.

서버의 api를 사용하는 클라이언트측이 특정 오류일 경우 별도 처리를 해야한다고 했을 때 http status만으로는 확인이 어렵습니다.

또한 오류메세지로 예외 처리를 한다면 오류 메세지가 바뀔 경우 대응이 불가능합니다.

따라서 오류 메세지와는 별개로 오류 코드를 관리한다면 클라이언트에서도 대응하기 훨씬 편합니다.

 

고객이 오류가 발생했을 때 오류 코드를 준다면 해당 오류 코드를 발생시키는 코드를 쉽게 찾을 수도 있습니다.

 

http status의 현재는 각 오류마다 어떤 http status를 던져야할지를 정의하고 있지만 enum 에서 http status는 관리하지 않고 AuthenticationException 이면 항상 401, BusinessException이면 500, EntityNotFoundException면 400 등 예외로도 관리할 수 있고 상황에 맞게 관리를 하시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 성호님!

전역 에러 처리에 대한 질문에 대해 답변 드리겠습니다.

Error Code의 의미

errorCode는 애플리케이션에서 발생하는 오류를 보다 세밀하게 구분하기 위해 사용됩니다. HTTP 상태 코드는 주로 규격화된 상태를 나타내지만, 같은 HTTP 상태 코드(예: 400 Bad Request)에서도 여러 가지 이유로 오류가 발생할 수 있습니다. errorCode는 이러한 다양한 상황을 보다 직관적으로 표현하기 위해 제공됩니다. 예를 들어, USER_NOT_FOUND, EMAIL_ALREADY_EXISTS와 같은 코드를 통해 문제가 무엇인지 더 명확히 알 수 있습니다.

enum 사용의 이유

강의에서 제시된 것처럼 enum을 사용하여 에러 코드를 관리하면, 여러 가지 장점이 있습니다:

  1. 유지 보수성: 에러 코드를 한 곳에서 관리할 수 있어 유지보수가 용이합니다.
  2. 명확성: 코드를 보는 사람들이 어떤 에러가 발생 가능하고, 그것이 의미하는 바가 무엇인지를 쉽게 이해할 수 있습니다.
  3. 타입 안전성: 컴파일 타임에 오류를 잡아낼 수 있습니다.

하지만 모든 HTTP 상태 코드에 대해 각각의 에러 코드를 작성할 필요는 없습니다. 필요한 에러 상황을 정의하고, 공통적인 에러 코드를 재사용하는 방식도 가능합니다.

추천 자료

아래 링크에서는 유사한 전역 에러 처리와 관련된 내용이 토론됩니다. 보시고 활용하시면 많은 도움이 될 것입니다:

  • 전역 에러 처리 메시지 관리
    • 이 링크에서는 다른 수강생이 messages.properties 파일을 사용하여 에러 메시지를 관리하는 방식에 대해 설명하고 있습니다. 이와 같이 에러 메시지를 파일로 관리해보는 것도 좋은 방법이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

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

작성한 질문수

질문하기