TIL

사용자 정의 예외 처리 및 서버 응답 구현

DongHo 2024. 12. 27. 14:50

문제 정의

웹 애플리케이션에서 다양한 응답과 예외 상황을 처리하는 과정에서, 프론트엔드에 불필요한 데이터가 포함되거나 일관되지 않은 형식으로 전달될 수 있는 문제가 있었습니다. 

 

설계 목적

이를 해결하기 위해, 모든 응답과 예외 상황을 체계적으로 관리하고 필요한 정보만을 추출하여 제공할 수 있는 공통 응답 객체와 전역 예외 처리 구조를 설계했습니다. 위와 같은 구조는 응답의 일관성을 유지하고, 유지보수성을 높이며, 예외 상황에서도 명확하고 간결한 데이터를 전달할 수 있도록 시스템의 안정성을 강화하는 데 중점을 두었습니다. 

 

설계

global
└── common
   ├── exception
   │   ├── CommonException.java		// 사용자 정의 예외 클래스
   │   ├── ErrorCode.java		// 다양한 에러 코드 관리 클래스
   │   ├── ExceptionResponse.java	// 예외 응답 객체(예외 코드&메시지 캡슐화)
   │   └── GlobalExceptionHandler.java	// 전역 예외 처리기
   └── response
       └── ApiResponse.java		// 공통 응답 객체

 

각 파일 설명

  • ExceptionResponse
    • 예외 응답 객체로, 발생한 예외의 코드와 메시지를 캡슐화하여 클라이언트에 전달하는 역할을 수행합니다.
  • CommonException
    • 사용자 정의 예외 클래스로, ErrorCode를 기반으로 예외를 생성하고 처리할 수 있습니다.
  • ErrorCode
    • 애플리케이션에서 발생할 수 있는 다양한 예외의 코드, HTTP 상태, 메시지를 정의하고 관리합니다.
  • GlobalExceptionHandler
    • 전역 예외 처리기로, 프로젝트에서 발생하는 다양한 예외를 처리하고 적절한 응답을 반환합니다.
  • ApiResponse
    • API 응답 포맷을 정의한 클래스입니다. 성공/실패 여부, 결과 데이터, 예외 정보를 포함한 응답 객체를 생성합니다.

 

결과

(좌) 성공, (우) 실패

 

 

코드

 

GitHub - Bang1999/WeShareU: 외국인을 위한 여행 공유 플랫폼 WSU

외국인을 위한 여행 공유 플랫폼 WSU. Contribute to Bang1999/WeShareU development by creating an account on GitHub.

github.com