全局自定义异常处理能力
全局自定义异常处理能力
1.当只需要给前端返回异常信息时
系统中的业务异常按如下方式抛出,异常信息会按照统一的数据格式封装后返回给前端页面。
1
throw new BusinessException("删除角色前请先解除角色关联的权限!");
2.当需要同时给前端返回自定义异常编码和异常信息时
定义异常枚举信息:
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
package com.framework.backend.enums;
import org.springframework.http.HttpStatus;
/**
* @author xiafeng
*/
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum ResultCode {
SUCCESS(HttpStatus.OK.value(), "成功"),
FAIL(HttpStatus.INTERNAL_SERVER_ERROR.value(), "系统内部错误"),
UNAUTHORIZED(HttpStatus.UNAUTHORIZED.value(), "未授权访问"),
FORBIDDEN(HttpStatus.FORBIDDEN.value(), "禁止访问"),
LOGIN_FAIL(HttpStatus.INTERNAL_SERVER_ERROR.value(), "用户账号或密码输入错误"),
CAPTCHA_FAIL(HttpStatus.INTERNAL_SERVER_ERROR.value(), "验证码输入错误"),
PASSWORD_EXPIRED(HttpStatus.INTERNAL_SERVER_ERROR.value(), "用户密码过期错误"),
LOGIN_SUCCESS(HttpStatus.OK.value(), "用户登录成功"),
LOGOUT_SUCCESS(HttpStatus.OK.value(), "用户登出成功"),
MULTIPLE_LOGIN(HttpStatus.UNAUTHORIZED.value(), "用户重复登录"),
USER_ORGID_IS_NULL(30001, "用户组织id为空!"),
USER_ACCOUNT_REPEAT(30002, "用户登录名重复!");
private Integer code;
private String message;
ResultCode() {}
ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
使用异常枚举信息:
1
throw new BusinessException(ResultCode.USER_ACCOUNT_REPEAT);
不使用异常枚举信息时:
1
2
//框架版本>=1.2.0时,还可以直接设置异常编码
throw new BusinessException(10000, "用户组织id为空!");
本文由作者按照
CC BY 4.0
进行授权