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

news/2024/10/22 15:43:37/

异常消息处理

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

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

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

业务在进行处理的时候

数据格式就是这样

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

前端如何去处理得去斟酌

即使前端出现了异常

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

我们有一个异常处理器

Spring MVC 属于 controller 层的技术

放这里就行

定义全新的数据访问格式

package com.bigdata1421.ssmp.controller.utils;import lombok.Data;@Data
public class Result {private Boolean flag;private Object data;private String msg;public Result(Boolean flag){this.flag=flag;}public Result(Boolean flag,Object data){this.flag=flag;this.data=data;}public Result(Boolean flag,String msg){this.flag=flag;this.msg=msg;}}

也可以这样改写

异常处理类

package com.bigdata1421.ssmp.controller.utils;import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RestControllerAdvice;//作为 spring mvc 的异常处理器
@RestControllerAdvice
public class ProjectExceptionAdvice {@ExceptionHandlerpublic Result doException(Exception ex){//记录日志//通知运维//通知开发ex.printStackTrace();return new Result(  "服务器故障,请稍后重试");}}

Result类

package com.bigdata1421.ssmp.controller.utils;import lombok.Data;@Data
public class Result {private Boolean flag;private Object data;private String msg;public Result(Boolean flag){this.flag=flag;}public Result(Boolean flag,Object data){this.flag=flag;this.data=data;}public Result(String msg){this.flag=false;this.msg=msg;}}

这样就能拿到报错信息

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

空体判断

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

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

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

这样不好

先是异常处理

之后是代码核心逻辑处理

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

进阶版

页面消息处理

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

传递消息后加载指定消息

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

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

目的是国际化

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

这样前端就能简化书写

小结


http://www.ppmy.cn/news/1466356.html

相关文章

【操作与配置】VS2017与MFC环境配置

【操作与配置】VS2017与MFC环境配置 概述 Visual Studio 是一款强大且多功能的集成开发环境(IDE),适用于软件开发人员和团队。使用此应用程序,您可以构建和调试现代Web应用程序,并利用扩展帮助探索几乎任何编程语言。…

基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)

癫痫是一种由大脑神经元突发性异常放电导致的大脑功能性障碍疾病。据世界卫生组织统计,全球约有7000万人患有癫痫。癫痫患者在发病时呈现肌肉抽搐、呼吸困难、意识丧失等症状。由于癫痫发作的偶然性,患者极有可能在高空、驾驶、游泳等危险情况下发病并丧…

编程入门语言:探秘编程世界的起点

编程入门语言:探秘编程世界的起点 在浩瀚的编程世界中,选择一门合适的入门语言,无疑是开启编程之旅的第一步。然而,面对众多的编程语言,初学者往往感到迷茫和困惑。那么,究竟哪门语言最适合作为编程入门之…

电力系统上线测试工具介绍

上线测试 电力系统上线测试工具主要用于在电力系统建设完成后,对系统进行全面的功能和性能测试。这些工具可以模拟各种运行环境和负载情况,以检测电力系统的性能和稳定性。 以下是几种常见的电力系统上线测试工具: 1. 负载测试工具&#x…

比较(二)利用python绘制雷达图

比较(二)利用python绘制雷达图 雷达图(Radar Chart)简介 雷达图可以用来比较多个定量变量,也可以用于查看数据集中变量的得分高低,是显示性能表现的理想之选。缺点是变量过多容易造成阅读困难。 快速绘制…

基于springboot+vue的医院信息管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Linux最常用的硬件相关的命令

Linux最常用的硬件相关的命令 Linux最常用的硬件相关的命令查看块设备的lsblk显示管理磁盘分区 fdisk显示当前系统的分区情况 显示硬件信息的hwinfo**显示所有硬件信息**:**指定特定硬件信息**: 列出系统硬件信息的lshw显示所有硬件信息查看摘要硬件信息…

数据库与数据库管理系统 MySQL的安装 SQL语言学习:DDL、DML

day51 数据库 数据库(database)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。 通过数据库管理系统,可以有效地组织和管理存储在数据库中的数据,如数据库管理系统MySQL 数据…