说明:仅且返回状态为0时说明正确返回,其余都是异常或错误返回

1、封装返回数据状态,数据,信息Result .java

@ApiModel(description = "接口返回响应数据")
public class Result extends HashMap<String,Object> implements java.io.Serializable {public Result setSuccess(Object data) {return this.setSuccess("操作成功", data);}public Result setSuccess(String msg) {return this.setSuccess(msg, null);}public Result setSuccess(String msg, Object data) {this.put("msg", msg);this.put("data", data);this.put("status", BaseResponseCode.SUCCESS.getStatus());return this;}public Result setError(String msg) {return this.setError(msg, BaseResponseCode.ERROR.getStatus());}public Result setError(Integer status) {return this.setError("操作失败", status);}public Result setError(String msg, Integer status) {this.put("msg", msg);this.put("status", status);return this;}public Result setError(ResponseCodeInterface code) {this.put("msg", code.getMsg());this.put("status", code.getStatus());return this;}public Result setResult(String msg, Object data, Integer status) {this.put("msg", msg);this.put("data", data);this.put("status", status);return this;}
}

常量

2、封装异常返回数据

自定义异常接口

ResponseCodeInterface.java

public interface ResponseCodeInterface {int getCode();String getMsg();}

枚举类:BaseResponseCode.java

public enum BaseResponseCode implements ResponseCodeInterface {SUCCESS(0, "操作成功"),ERROR(1, "操作异常"),/*** 账户异常*/USER_EXIST(400001, "该用户已存在,请重新注册"),USER_EXIST1(400001, "该邮箱存在,请重新注册"),NOT_ACCOUNT(400002, "该用户不存在,请先注册"),USER_LOCK(400005, "该用户已被锁定,请联系运营人员"),ACCOUNT_ERROR(400009, "该账号异常,请联系运营人员"),PASSWORD_ERROR(400010,"用户名或密码错误"),OLD_PASSWORD_ERROR(400011,"旧密码不正确"),USER_PASSWORD_ERROR(400012,"用户或密码不正确"),/*** 请求参数异常*/DATA_ERROR(400020,"传入数据异常"),/*** 前端操作异常*/OPERATION_MENU_PERMISSION_CATALOG_ERROR(401031,"操作后的类型是目录,所属菜单必须为默认顶级菜单或者目录"),OPERATION_MENU_PERMISSION_MENU_ERROR(401032,"操作后的类型是菜单,所属菜单必须为目录类型"),OPERATION_MENU_PERMISSION_BTN_ERROR(401033,"操作后的类型是按钮,所属菜单必须为菜单类型"),/*** token异常*/TOKEN_ERROR(401001, "登录凭证已过期,请重新登录"),TOKEN_PAST_DUE(401002, "授权信息已过期,请刷新token"),/*** 权限异常*/UNAUTHORIZED_ERROR(403001, "权鉴校验不通过"),/*** 操作数据库异常*/REGISTER_ERROR(500001, "注册失败,请尝试重新注册"),;private final String msg;private final int status;BaseResponseCode(int status, String msg) {this.status = status;this.msg = msg;}@Overridepublic int getStatus() {return status;}@Overridepublic String getMsg() {return msg;}
}

异常类:BusinessException.java

public class BusinessException  extends RuntimeException {/*** 异常编号*/private final int messageCode;/*** 对messageCode 异常信息进行补充说明*/private final String detailMessage;public BusinessException(int messageCode,String message) {super(message);this.messageCode = messageCode;this.detailMessage = message;}/*** 构造函数* @param code 异常码*/public BusinessException(ResponseCodeInterface code) {this(code.getCode(), code.getMsg());}public int getMessageCode() {return messageCode;}public String getDetailMessage() {return detailMessage;}}

3、正常返回与异常返回

controller层  LoginRegisterController.java将调用下面service层方法

public Result register(RegisterReqVO vo){Result result= new Result();try {trUserService.register(vo);result.setSuccess("注册成功");} catch (BusinessException e) {e.printStackTrace();result.setError(e.getMessageCode(),e.getDetailMessage());} catch (Exception e) {e.printStackTrace();result.setError("注册异常");return result;}return result;}

service层:TRUserServiceImpl.java

@Override
public String register(RegisterReqVO vo) throws Exception {// 先检查数据库是否有在用的账号或邮箱,只要就一个就不注册if (BeanUtil.isNotEmpty(vo.getUsername())) {if (findByUsername(vo.getUsername())) {throw new BusinessException(BaseResponseCode.USER_EXIST);}}if (BeanUtil.isNotEmpty(vo.getEmail())) {if (findByEmail(vo.getEmail())) {throw new BusinessException(BaseResponseCode.USER_EXIST1);}}TRUser trUser = new TRUser();BeanUtils.copyProperties(vo, trUser);trUser.setSalt(PasswordUtils.getSalt());String encode = PasswordUtils.encode(vo.getPassword(), trUser.getSalt());trUser.setPassword(encode);trUser.setCreatDate(new Date());save(trUser);return trUser.getId();
}

说明:当正常返回或者走到Exception异常时返回Result,当走自定义异常BusinessException时,返回BusinessException中错误状态码与错误说明

十四、springBoot2.0 自定义异常相关推荐

  1. 学以致用三十四-----python2.0加载图片

    想用做一个静态图片为背景的页面.结果遇到了一些阻碍.其主要原因还是路径没有找对.网上也参考了不少方法,也许是因为版本不同,处理的方法也不同,因此按照网上的处理方式,也没有得到解决. 为此困惑了一天.结 ...

  2. 【Vue2.0】—默认插槽、具名插槽、作用域插槽(二十四)

    [Vue2.0]-默认插槽.具名插槽.作用域插槽(二十四) 默认插槽.具名插槽 Cateory.vue文件 <template><div class="cateory&qu ...

  3. 【Vue2.0】—ref属性(十四)

    [Vue2.0]-ref属性(十四)

  4. springboot2.0处理自定义异常始终返回json

    springboot2.0处理自定义异常始终返回json 参考文章: (1)springboot2.0处理自定义异常始终返回json (2)https://www.cnblogs.com/ifme/p ...

  5. 【正点原子Linux连载】第四十四章 设备树下的LED驱动实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. Citrix 服务器虚拟化之十四 介绍桌面虚拟化之XenDesktop 7.0

    Citrix 服务器虚拟化之十四  介绍桌面虚拟化之XenDesktop 7.0 Citrix XenDesktop 提供了强大而灵活的桌面虚拟化解决方案,允许您将虚拟桌面交付给身处任何位置.使用任何 ...

  7. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 我的前后端开发简史...

    ---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...

  8. SLAM十四讲-设计前端-0.4-代码解读

    本博文的创作目的是对高翔博士的<视觉SLAM十四讲>第九讲--实践:设计前端,0.4部分的代码进行解读,以作为阅读的笔记,若有错误之处,欢迎留言讨论. 基本类    上图是工程中所用到的基 ...

  9. 【正点原子FPGA连载】第十四章 IP核之RAM实验 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

  10. 【正点原子Linux连载】第六十四章 Linux 多点电容触摸屏实验 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

最新文章

  1. YOLOv5目标检测源码重磅发布了!
  2. Jenkins+Pipeline+Docker部署SpringBoot项目到远程服务器
  3. 学python有哪些书推荐-Python 有哪些入门学习方法和值得推荐的经典教材?
  4. 位置环PID模糊C语言,PID和位置环
  5. 数据库行转列在现实需求中的用法
  6. linux下修改max_user_processes和open_file的最大值
  7. android布局添加布局,Android中添加布局和初始化布局总结
  8. [bzoj1009](HNOI2008)GT考试 (kmp+矩阵快速幂加速递推)
  9. json取数据怎么取_灯罩怎么取下来 各种吸顶灯的灯罩拆卸方法
  10. 推荐三个实用的开源项目
  11. Oracle 11g R1/R2 真正应用集群(RAC)基础
  12. 【优化算法】自私羊群优化算法(SHO)【含Matlab源码 1569期】
  13. 高薪物联网职业生涯所需的十大技能(转)
  14. 网络安全博客与文章分享:
  15. 计算机怎么打开网络共享,windows电脑如何开启wifi网络共享呢
  16. 电商让客户等待的话术
  17. 2021年读书总结(持续更新中)
  18. person.s=“柳岩“和person[“s“]=“李小璐“的区别
  19. CSS # 通过CSS使图片颜色反转
  20. 报:严重 [RMI TCP Connection(3)-127.0.0.1]

热门文章

  1. ie浏览器的标准模式与怪异模式的设置与区分方法
  2. Android版本手机怎么截屏,安卓手机怎么截屏的4种方法
  3. Windows 命令提示符
  4. 自主研发国产高端企业云服务器,浪潮商用机器如何聚沙成塔?
  5. Specificity and sensitivity
  6. echarts中中国地图飞机路线使用
  7. [分享]从许三多精神看企业管理
  8. Backtrader量化平台教程(六)Analyzer
  9. 通过c语言求得一个英文句子中的单词数量
  10. 2013中国旅游网站100强排行榜