-
Notifications
You must be signed in to change notification settings - Fork 1
/
ErrorMessage.java
119 lines (106 loc) · 3.1 KB
/
ErrorMessage.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package com.houkunlin.system.common;
import lombok.*;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 给前端返回的统一格式信息数据包装器。
* 目前只用在返回错误消息,ok200的成功消息不适用该对象来再次封装
*
* @author HouKunLin
*/
@Accessors(chain = true)
@Builder
@Setter
@Getter
@ToString
@EqualsAndHashCode
public class ErrorMessage implements IErrorMessage, Serializable {
/**
* 业务错误代码。参考《阿里巴巴Java开发手册》,每个错误对应一个错误代码
* 规则:一位错误生产来源+四位数字编号。
* 错误生产来源:
* A:错误来源于用户
* B:错误来源于当前系统
* C:错误来源于第三方服务
*/
private final String code;
/**
* 业务错误提示,详细的错误提示内容。
*/
private final String message;
/**
* 其他错误相关消息
*/
private Object data;
public ErrorMessage(IErrorMessage errorMessage) {
this(errorMessage.getCode(), errorMessage.getMessage(), null);
}
public ErrorMessage(String code, String message) {
this(code, message, null);
}
public ErrorMessage(String code, String message, Object data) {
this.code = code;
this.message = message;
this.data = data;
}
/**
* 构建一个默认的错误消息
*
* @param message 错误信息
* @return 消息对象
*/
public static ErrorMessage error(String message) {
return error(message, null);
}
/**
* 构建一个默认的错误消息
*
* @param message 错误信息
* @param data 错误其他相关内容
* @return 消息对象
*/
public static ErrorMessage error(String message, Object data) {
final StackTraceElement traceElement = StackUtil.getParentStackTraceElement(ErrorMessage.class);
return new ErrorMessage(buildErrorCode(traceElement), message, data);
}
/**
* 构建一个默认的成功信息
*
* @return 消息对象
*/
public static ErrorMessage ok() {
return ok("OK", null);
}
/**
* 构建一个默认的成功信息
*
* @param message 成功信息
* @return 消息对象
*/
public static ErrorMessage ok(String message) {
return ok(message, null);
}
/**
* 构建一个默认的成功信息
*
* @param message 成功信息
* @param data 成功信息相关内容
* @return 消息对象
*/
public static ErrorMessage ok(String message, Object data) {
return new ErrorMessage("OK", message, data);
}
/**
* 构建错误代码
*
* @param traceElement 堆栈跟踪元素
* @return 错误代码
*/
public static String buildErrorCode(StackTraceElement traceElement) {
if (traceElement != null) {
// MN = Method Name, #L = Error Line Number
return "MN:" + traceElement.getMethodName() + "#L" + traceElement.getLineNumber();
}
return "MN:[unknown]#L0";
}
}