|
1 | 1 | package letsdev.common.exception.support;
|
2 | 2 |
|
3 | | -import org.springframework.http.HttpStatus; |
4 | | - |
5 | | -import java.util.Collections; |
6 | 3 | import java.util.Map;
|
7 | 4 | import java.util.function.Supplier;
|
8 | 5 |
|
9 | | -public class CustomException extends RuntimeException { |
10 | | - |
11 | | - protected final ErrorCode errorCode; |
12 | | - protected final Runnable action; |
13 | | - protected final Supplier<Map<String, Object>> payloadSupplier; |
| 6 | +public class CustomException extends BaseCustomException { |
14 | 7 |
|
15 | 8 | public CustomException() {
|
16 | | - super(getDefaultErrorCode().message()); |
17 | | - this.errorCode = getDefaultErrorCode(); |
18 | | - this.action = () -> {}; |
19 | | - this.payloadSupplier = Collections::emptyMap; |
| 9 | + super(); |
20 | 10 | }
|
21 | 11 |
|
22 | 12 | public CustomException(String message) {
|
23 | 13 | super(message);
|
24 | | - this.errorCode = getDefaultErrorCode(); |
25 | | - this.action = () -> {}; |
26 | | - this.payloadSupplier = Collections::emptyMap; |
27 | 14 | }
|
28 | 15 |
|
29 | 16 | public CustomException(String message, Throwable cause) {
|
30 | 17 | super(message, cause);
|
31 | | - this.errorCode = getDefaultErrorCode(); |
32 | | - this.action = () -> {}; |
33 | | - this.payloadSupplier = Collections::emptyMap; |
34 | 18 | }
|
35 | 19 |
|
36 | 20 | public CustomException(ErrorCode errorCode) {
|
37 | | - super(errorCode.message()); |
38 | | - this.errorCode = errorCode; |
39 | | - this.action = () -> {}; |
40 | | - this.payloadSupplier = Collections::emptyMap; |
| 21 | + super(errorCode); |
41 | 22 | }
|
42 | 23 |
|
43 | 24 | public CustomException(ErrorCode errorCode, Throwable cause) {
|
44 | | - super(errorCode.message(), cause); |
45 | | - this.errorCode = errorCode; |
46 | | - this.action = () -> {}; |
47 | | - this.payloadSupplier = Collections::emptyMap; |
| 25 | + super(errorCode, cause); |
48 | 26 | }
|
49 | 27 |
|
50 | 28 | public CustomException(ErrorCode errorCode, Runnable action) {
|
51 | | - super(errorCode.message()); |
52 | | - this.errorCode = errorCode; |
53 | | - this.action = action; |
54 | | - this.payloadSupplier = Collections::emptyMap; |
| 29 | + super(errorCode, action); |
55 | 30 | }
|
56 | 31 |
|
57 | 32 | public CustomException(ErrorCode errorCode, Runnable action, Throwable cause) {
|
58 | | - super(errorCode.message(), cause); |
59 | | - this.errorCode = errorCode; |
60 | | - this.action = action; |
61 | | - this.payloadSupplier = Collections::emptyMap; |
| 33 | + super(errorCode, action, cause); |
62 | 34 |
|
63 | 35 | }
|
64 | 36 |
|
65 | 37 | public CustomException(ErrorCode errorCode, Supplier<Map<String, Object>> payloadSupplier) {
|
66 | | - super(errorCode.message()); |
67 | | - this.errorCode = errorCode; |
68 | | - this.action = () -> {}; |
69 | | - this.payloadSupplier = payloadSupplier; |
| 38 | + super(errorCode, payloadSupplier); |
70 | 39 |
|
71 | 40 | }
|
72 | 41 |
|
73 | 42 | public CustomException(ErrorCode errorCode, Supplier<Map<String, Object>> payloadSupplier, Throwable cause) {
|
74 | | - super(errorCode.message(), cause); |
75 | | - this.errorCode = errorCode; |
76 | | - this.action = () -> {}; |
77 | | - this.payloadSupplier = payloadSupplier; |
78 | | - } |
79 | | - |
80 | | - private static ErrorCode getDefaultErrorCode() { |
81 | | - return DefaultErrorCodeHolder.DEFAULT_ERROR_CODE; |
82 | | - } |
83 | | - |
84 | | - public ErrorCode getErrorCode() { |
85 | | - return errorCode; |
86 | | - } |
87 | | - |
88 | | - private static class DefaultErrorCodeHolder { // 사용할 때 로드 + 스레드 세이프(클래스 로드 타임은 동시성 보장됨.) |
89 | | - private static final ErrorCode DEFAULT_ERROR_CODE = new ErrorCode() { |
90 | | - @Override |
91 | | - public String name() { |
92 | | - return "SERVER_ERROR"; |
93 | | - } |
94 | | - |
95 | | - @Override |
96 | | - public HttpStatus httpStatus() { |
97 | | - return HttpStatus.INTERNAL_SERVER_ERROR; |
98 | | - } |
99 | | - |
100 | | - @Override |
101 | | - public String message() { |
102 | | - return "서버 오류"; |
103 | | - } |
104 | | - |
105 | | - @Override |
106 | | - public CustomException exception() { |
107 | | - return new CustomException(this); |
108 | | - } |
109 | | - |
110 | | - @Override |
111 | | - public CustomException exception(Throwable cause) { |
112 | | - return new CustomException(this, cause); |
113 | | - } |
114 | | - |
115 | | - @Override |
116 | | - public CustomException exception(Runnable action) { |
117 | | - return new CustomException(this, action); |
118 | | - } |
119 | | - |
120 | | - @Override |
121 | | - public CustomException exception(Runnable action, Throwable cause) { |
122 | | - return new CustomException(this, action, cause); |
123 | | - } |
124 | | - |
125 | | - @Override |
126 | | - public CustomException exception(Supplier<Map<String, Object>> payloadSupplier) { |
127 | | - return new CustomException(this, payloadSupplier); |
128 | | - } |
129 | | - |
130 | | - @Override |
131 | | - public CustomException exception(Supplier<Map<String, Object>> payloadSupplier, Throwable cause) { |
132 | | - return new CustomException(this, payloadSupplier, cause); |
133 | | - } |
134 | | - }; |
| 43 | + super(errorCode, payloadSupplier, cause); |
135 | 44 | }
|
136 | 45 | }
|
0 commit comments