• SSMP整合案例第七步 前后端业务异常消息统一处理


    异常消息处理

    我们当前的增删改查基本完成

    我们当前的情况是在理想状态下完成的

    但是实际开发中我们要抛出异常

    业务在进行处理的时候

    数据格式就是这样

    前端拿到的信息我们应该去处理

    前端如何去处理得去斟酌

    即使前端出现了异常

    我们也要让返回的异常信息让前端成功读取

    我们有一个异常处理器

    Spring MVC 属于 controller 层的技术

    放这里就行

    定义全新的数据访问格式

    1. package com.bigdata1421.ssmp.controller.utils;
    2. import lombok.Data;
    3. @Data
    4. public class Result {
    5. private Boolean flag;
    6. private Object data;
    7. private String msg;
    8. public Result(Boolean flag){
    9. this.flag=flag;
    10. }
    11. public Result(Boolean flag,Object data){
    12. this.flag=flag;
    13. this.data=data;
    14. }
    15. public Result(Boolean flag,String msg){
    16. this.flag=flag;
    17. this.msg=msg;
    18. }
    19. }

    也可以这样改写

    异常处理类

    1. package com.bigdata1421.ssmp.controller.utils;
    2. import org.springframework.web.bind.annotation.ExceptionHandler;
    3. import org.springframework.web.bind.annotation.RestController;
    4. import org.springframework.web.bind.annotation.RestControllerAdvice;
    5. //作为 spring mvc 的异常处理器
    6. @RestControllerAdvice
    7. public class ProjectExceptionAdvice {
    8. @ExceptionHandler
    9. public Result doException(Exception ex){
    10. //记录日志
    11. //通知运维
    12. //通知开发
    13. ex.printStackTrace();
    14. return new Result( "服务器故障,请稍后重试");
    15. }
    16. }

    Result类

    1. package com.bigdata1421.ssmp.controller.utils;
    2. import lombok.Data;
    3. @Data
    4. public class Result {
    5. private Boolean flag;
    6. private Object data;
    7. private String msg;
    8. public Result(Boolean flag){
    9. this.flag=flag;
    10. }
    11. public Result(Boolean flag,Object data){
    12. this.flag=flag;
    13. this.data=data;
    14. }
    15. public Result(String msg){
    16. this.flag=false;
    17. this.msg=msg;
    18. }
    19. }

    这样就能拿到报错信息

    1. //修改
    2. handleEdit() {
    3. //与添加功能绑定的是一个数据模型
    4. //绑定的是确定按钮 发起请求
    5. axios.put("/users", this.formData).then((res) => {
    6. //判断当前操作是否成功
    7. if (res.data.flag) {
    8. //关闭弹层
    9. this.cancel();
    10. this.$message.success("人员数据修改成功");
    11. }else {
    12. this.$message.error(res.data.msg);
    13. }
    14. }).finally(()=>{
    15. //重新加载页面
    16. this.getAll();
    17. });
    18. },

    空体判断

    抛出异常给Spring mvc的异常消息处理机制

    但是这样我们的代码有的是在前端页面中写的

    有的是在服务器的三层架构里写的 这样不好

    这样不好

    先是异常处理

    之后是代码核心逻辑处理

    判断flag是否为ture 还是false 添加成功

    进阶版

    页面消息处理

    没有传递消息加载默认消息

    传递消息后加载指定消息

    我们后端和前端都要进行处理

    我们主要是在表现层Controller中进行消息统一处理

    目的是国际化

    让异常处理的时候交给后端统一处理

    这样前端就能简化书写

    小结

  • 相关阅读:
    【C#】复杂Json的反序列
    面试:CAS算法原理
    lme4:用于混合效应模型分析的R包
    第二周opencv
    计算机网络期末复习题库(下)
    Mac系统下 脚本sed的简单使用
    java-net-php-python-jspm人力外包服务公司招聘管理系统计算机毕业设计程序
    CentOS to KeyarchOS 系统迁移体验
    go语言|二叉树递归遍历,可能有你没见过的花样玩法
    【校招VIP】互联网校招项目&实习对项目的要求不重要?大错特错!你忽略掉的项目考察重点都在这里!
  • 原文地址:https://blog.csdn.net/qq_30500575/article/details/139409901