From 036b722ba29cec9bc7d8da5cd6598ff5ebe2a9e3 Mon Sep 17 00:00:00 2001 From: Zerohertz Date: Thu, 31 Oct 2024 00:16:00 +0900 Subject: [PATCH] :memo: docs: service layer design --- README.md | 7 ++++--- docs/service.md | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 docs/service.md diff --git a/README.md b/README.md index ba943dd..2397d12 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ ## Docs -- [docker-compose](docs/docker-compose.md) -- [kubernetes](docs/kubernetes.md) -- [package-structure](docs/package-structure.md) +- [Package 구조](docs/package-structure.md) +- [Service layer 개발 방법](docs/service.md) +- [Docker Compose 사용 방법](docs/docker-compose.md) +- [Kubernetes 사용 방법](docs/kubernetes.md) diff --git a/docs/service.md b/docs/service.md new file mode 100644 index 0000000..126f175 --- /dev/null +++ b/docs/service.md @@ -0,0 +1,27 @@ +## Exception Handling + +> Service layer의 exception handling은 [`GlobalExceptionHandler`](src/main/java/com/server/global/error/handler/GlobalExceptionHandler.java)를 통해 관리 + +```java +@RestControllerAdvice +public class GlobalExceptionHandler { + + @ExceptionHandler(AuthException.class) + public ResponseEntity> handleFriendException(AuthException e) { + return ResponseEntity.status(e.getStatus()).body(ApiResponseDto.error(e.getStatus(), e.getMessage())); + } + + @ExceptionHandler(BusinessException.class) + public ResponseEntity> handleFriendException(BusinessException e) { + return ResponseEntity.status(e.getStatus()).body(ApiResponseDto.error(e.getStatus(), e.getMessage())); + } + +} +``` + +> [`ErrorCode`](src/main/java/com/server/global/error/code) 및 [`Exception`](src/main/java/com/server/global/error/exception) 정의 후 아래 예시와 같이 service layer에서 예외 생성 + +```java +throw new AuthException(AuthErrorCode.OAUTH_PROCESS_ERROR); +throw new BusinessException(FriendErrorCode.RECEIPT_ALREADY_EXISTS); +```