Skip to content

Commit 41b15a4

Browse files
committed
docs(readme): distinguish feature sections and add mermaid class diagram
1 parent 887d5ef commit 41b15a4

File tree

1 file changed

+64
-5
lines changed

1 file changed

+64
-5
lines changed

README.md

Lines changed: 64 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,77 @@
88

99
- Syntax Version: JDK 17 (Preview)
1010
- Docker Compose (Download: [Docker Desktop](https://www.docker.com/products/docker-desktop/))
11+
# Features
1112

12-
# 기능
13+
**확장성 있는 에러코드 설계를 제공합니다.**
14+
대부분의 기능은 예시이므로, 종종 필요 이상으로 구현되거나 너무 간단한 구현을 제공할 수 있습니다.
15+
16+
## Interface Error Code
17+
18+
에러코드는(`ErrorCode`) 리소스나 기능 단위로 분류할 수 있습니다.
19+
커스텀 예외는(`CustomException`) 런타임 예외로 생성되며, 에러코드를 핸들링합니다.
20+
21+
| Class | Description |
22+
|:----------------------------:|:-----------------------------------------------------------------------------|
23+
| (I) Error Code | 모든 에러 코드의 상위 타입입니다. **_<ins>여러 `enum` 에러 코드에 구현하여 확장성 있는 구조를 제공합니다.</ins>_** |
24+
| (C) Custom Exception | 모든 커스텀 예외들의 상위 타입 역할을 합니다. |
25+
26+
**Example**
27+
28+
```mermaid
29+
---
30+
config:
31+
theme: 'forest'
32+
---
33+
classDiagram
34+
class ErrorCode {
35+
<<interface>>
36+
+message() String
37+
+httpStatus() HttpStatus
38+
+exception() RuntimeException
39+
+exception(Throwable) RuntimeException
40+
+exception(Runnable) RuntimeException
41+
+exception(Runnable, Throwable) RuntimeException
42+
+exception(Supplier&lt;Map&lt;...>>) RuntimeException
43+
+exception(Supplier&lt;Map&lt;...>>, Throwable) RuntimeException
44+
}
45+
46+
class CustomException {
47+
-errorCode: ErrorCode
48+
-action: Runnable
49+
-payloadSupplier: Supplier&lt;Map&lt;...>>
50+
51+
+getErrorCode() ErrorCode
52+
+executeOnError() void
53+
+getPayload() Map&lt;...>
54+
+getPayloadOrElse(Map&lt;...>) Map&lt;...>
55+
+getPayloadOrElseGet(Supplier&lt;Map&lt;...>>) Map&lt;...>
56+
}
57+
58+
class BoardErrorCode {
59+
<<enumeration>>
60+
}
61+
class SignUpErrorCode {
62+
<<enumeration>>
63+
}
64+
class LoginErrorCode {
65+
<<enumeration>>
66+
}
67+
68+
ErrorCode <|.. BoardErrorCode
69+
ErrorCode <|.. SignUpErrorCode
70+
ErrorCode <|.. LoginErrorCode
71+
CustomException ..> ErrorCode : uses
72+
```
73+
74+
## Global Exception Handler
1375

14-
에러코드는(`ErrorCode`) 리소스나 기능 단위로 분류되며, 그 안에서 오류 상황을 명시하면서도 분류하기 편리하게 합니다.
15-
커스텀 예외는(`CustomException`) 런타임예외로 생성되며, 에러코드를 핸들링합니다.
1676
글로벌 익셉션 핸들러는(`GlobalExceptionHandler`) 커스텀 예외와 에러코드를 한 곳에서 처리하도록 돕습니다.
1777

1878
| Class | Description |
1979
|:----------------------------:|:-----------------------------------------------|
20-
| (I) Error Code | 이 에러 코드는 `enum`으로 작성된 다른 에러 코드의 상위 타입입니다. |
21-
| (C) Custom Exception | 모든 커스텀 예외들의 상위 타입 역할을 합니다. |
2280
| (C) Global Exception Handler | 커스텀 예외가 사전에 처리되지 않으면 이곳으로 전달됩니다. 예외 응답을 전달합니다. |
81+
| (R) API Error Response | API 예외 응답 바디 스펙입니다. 자바 `record`로 작성됩니다. |
2382

2483
- `interface ErrorCode`: `ErrorCode`는 각 `enum` 클래스에 구현될 수 있습니다.
2584
```java

0 commit comments

Comments
 (0)