新建package文件error。新建CommonError对象
public interface CommonError {
public int getErrCode();
public String getErrMsg();
public CommonError setErrMsg(String errMsg);
}
新建EmBusinessError implements CommonError
public enum EmBusinessError implements CommonError {
//通用错误类型100001
PARAMETER_VALIDATION_ERROR(10001,"参数不合法"),
UNKNOW_ERROR(10002,"未知错误"),
//2000开头为用户相关错误
USER_NOT_EXIST(20001,"用户不存在"),
USER_LOGIN_FAIL(20002,"手机或密码不存在"),
USER_NOT_LOGIN(20003,"用户还未登陆"),
//30000开头为交易型错误
STOCK_NOT_ENOUGH(30001,"库存不足")
;
private int errCode;
private String errMsg;
private EmBusinessError(int errCode,String errMsg){
this.errCode = errCode;
this.errMsg = errMsg;
}
@Override
public int getErrCode() {
return this.errCode;
}
@Override
public String getErrMsg() {
return this.errMsg;
}
//改动通用错误的errMsg
@Override
public CommonError setErrMsg(String errMsg) {
this.errMsg = errMsg;
return this;
}
}
新建BussinessException extends Exception implements CommonError
//包装器业务异常类实现
public class BussinessException extends Exception implements CommonError {
//emun
private CommonError commonError;
//直接接收EmBusinessError的传参用于构造业务异常
public BussinessException(CommonError commonError){
super();
this.commonError = commonError;
}
//接收自定义errMsg的方式构造业务异常(通过覆盖原本errMsg)
public BussinessException(CommonError commonError,String errMsg) {
super();
this.commonError = commonError;
this.commonError.setErrMsg(errMsg);
}
@Override
public int getErrCode() {
return this.commonError.getErrCode();
}
@Override
public String getErrMsg() {
return this.commonError.getErrMsg();
}
@Override
public CommonError setErrMsg(String str) {
this.commonError.setErrMsg(str);
return this;
}
}
优化controller代码,增加错误信息处理
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/get")
public CommonReturnType getUser(@RequestParam(name = "id") Integer id) throws BussinessException {
//调用service服务获取对应id对象返回给前端
UserModel userModel = userService.getUserById(id);
//若获取的对应用户信息存在
if (userModel == null) {
// userModel.setEncrptPassword("123");
throw new BussinessException(EmBusinessError.USER_NOT_EXIST);
}
//将核心领域模型用户对象转换为可供UI使用的viewobject
UserVo userVo = convertFromMode(userModel);
return CommonReturnType.create(userVo);
}
private UserVo convertFromMode(UserModel userModel) {
if (userModel == null) {
return null;
}
UserVo userVo = new UserVo();
BeanUtils.copyProperties(userModel, userVo);
return userVo;
}
}
请求链接:http://localhost:8080/user/get?id=2
错误截图:
为什么返回的不是错误信息呢?因为抛出的异常没有被处理,下一节会说道异常的处理
网友评论