当前位置: 首页 > wzjs >正文

销售网站建设实验报告360网址大全电脑版

销售网站建设实验报告,360网址大全电脑版,营销策划岗位职责,公司的国外网站怎么建目录 一.为什么引入全局异常处理器(目前项目碰到了什么问题)? 1.问题描述 2.与预期的差别 3.解决方案 二.解决上述问题 1.定义【业务异常类】 2.在serviceImpl层,手动抛出【违反唯一性约束】这个异常 3.定义【全局异常处理…

目录

一.为什么引入全局异常处理器(目前项目碰到了什么问题)?

1.问题描述

2.与预期的差别

3.解决方案

二.解决上述问题

1.定义【业务异常类】

2.在serviceImpl层,手动抛出【违反唯一性约束】这个异常

3.定义【全局异常处理器】

4.修改userController层的代码

三.展示效果

四.重点理解【全局异常处理器】的优点

1.项目引入了全局异常处理器以后,就不用在controller里面判断insert语句的影响行数了

2.引入全局异常处理器后,可以使得请求异常时的响应数据可读性非常强。

3.引入全局异常处理器后,后端产生异常时不会在控制台输出大片异常信息。

4.总结大致流程

结语


一.为什么引入全局异常处理器(目前项目碰到了什么问题)?

1.问题描述

        我们在添加一个系统用户时,要求用户名(username字段)必须是唯一的,即不能重复。如果重复了,那么insert语句不会返回0(之前我们是这么认为的),而是直接令后端报错。如下:

使用apiFox添加一个系统用户: 

去后端控制台查看报错:

可见此时是因为违反了user表的username字段的唯一约束(unique)。

2.与预期的差别

        我的初衷是:添加一个系统用户时,如果添加成功,就返回影响行数1;如果添加失败,就返回影响行数0。 

        这样就能在controller层中,根据影响行数来决定返回给前端什么响应体。

        如下:

        userServiceImpl层:

        userController层: 

        重点来了:上述所预想的一切,都不成立。因为当insert语句执行失败时,根本就不返回影响行数0,而是直接使后端崩塌,响应给前端的数据也是可读性极差。 

3.解决方案

         此时就需要定义【业务异常】和【全局异常处理器】来包容上述的错误。

        就好比insert语句执行失败时,扔出一颗炸弹,但没关系,我们直接使用全局异常处理器,来吸收即可。

二.解决上述问题

1.定义【业务异常类】

        该业务异常类,就包括我们上面提到的违反了唯一约束的这种异常。

        而且以后我们项目中出现了其他的业务异常,也可以用该类来接收。

        第一步:创建Exception目录,用来存放自定义异常类和全局异常处理器。

        第二步:在 Exception目录下,创建【业务异常类】。

2.在serviceImpl层,手动抛出【违反唯一性约束】这个异常

3.定义【全局异常处理器】

全局异常处理器,得益于spring。我们可以在全局异常处理器中,进行捕获某种异常并进行对应操作。从而来优化响应数据、防止后端崩塌(其实是美化后端控制台)。

在exception目录下,创建全局异常处理器。

package com.neuedu.his.Exception;import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;@ControllerAdvice//该注解可以自动捕获我们刚才抛出的异常
public class GlobalExceptionHandler {//处理自定义异常:【业务异常BusinessException】@ExceptionHandler(BusinessException.class)//专门处理业务异常类BusinessException@ResponseBody//表示我们要将该方法的返回值转为JSON格式返回给前端public ResponseEntity<Map<String, Object>> handleBusinessException(BusinessException e){Map<String, Object> response = new HashMap<>();response.put("code", 409);response.put("message", e.getMessage());return new ResponseEntity<>(response, HttpStatus.CONFLICT);}//处理其他异常@ExceptionHandler(Exception.class)@ResponseBodypublic ResponseEntity<Map<String, Object>> handleException(Exception e){Map<String, Object> response = new HashMap<>();response.put("code", 500);response.put("message", "系统内部错误,请稍后重试");return new ResponseEntity<>(response, HttpStatus.INTERNAL_SERVER_ERROR);}
}

4.修改userController层的代码

三.展示效果

成功的情况:

异常情况1:违反了数据库字段唯一性(业务异常)

异常情况2:其他异常

四.重点理解【全局异常处理器】的优点

1.项目引入了全局异常处理器以后,就不用在controller里面判断insert语句的影响行数了

        如下:我们在userController层中,没有判断insert语句的影响行数的情况下,就返回了成功信息。

        这是因为,代码能走到这里,说明userService没有抛出任何异常,也就间接说明了我们的添加用户业务没有任何问题,因此结果肯定是添加成功,因此就可以直接返回成功信息。

        因此以后我们项目引入全局异常处理器以后,在controller层可以直接调用完service层后直接返回成功信息。

2.引入全局异常处理器后,可以使得请求异常时的响应数据可读性非常强。

引入全局异常处理器之前,请求异常时的响应信息:

引入全局异常处理器之后,请求异常时的响应信息:

如下图:这两种异常请求下的响应数据,可读性都十分强,比原来的大坨字母强多了。

3.引入全局异常处理器后,后端产生异常时不会在控制台输出大片异常信息。

引入全局异常处理器之前,产生异常时控制台的样貌:

引入全局异常处理器之后,产生异常时控制台的样貌:

4.总结大致流程

①定义【自定义异常类】和【全局异常处理器】

②手动在serviceIml层抛出异常

③【全局异常处理器】自动捕获上面抛出的异常,并进行响应消息处理。

④如果serviceImpl层没抛出异常,则响应消息由controller层返回;

    如果serviceImpl层抛出了一场,则响应消息由【全局异常处理器】的某个方法返回。

结语

以上就是在项目中,引入【全局异常处理器】的原因、做法、优点。

喜欢本篇文章的话,可以留个免费的关注呦~~

http://www.dtcms.com/wzjs/566944.html

相关文章:

  • 建站需求电子商务网站的网络营销策略分析
  • 贝壳企业网站管理系统搜索引擎 网站地图
  • 网站做强制解析建筑设计公司名字大全
  • 为什么建设长虹网站seo信息编辑招聘
  • 做网站需要多少台服务器网站重要性
  • 做网站到八方资源网怎么样网络设计工资多少
  • 做网站一年赚80亿网站先做前端还是后端
  • 传奇网站模板psd每天一篇好文章网站
  • 在线做logo印章网站wordpress站点语言
  • 旅游网站建设属于什么以及学科传统旅行社如何建设网站
  • 不用代码做交互式网站制作微信商城网站开发
  • 影响网站排名重要因素做网站建设最好的公司是
  • 网站首页三张海报做多大淘宝推广引流方法有哪些
  • 毕设做网站心得体验高端建材项目
  • 服务器上网站打不开企业网站建设模版
  • 如何搭建自己得网站微信公众号开发步骤
  • 网站备案提交作文网站大全
  • 电子商务平台经营者制定平台服务协议和交易规则时连云港关键字优化资讯
  • 北京高端网站建设制作设计关键词是网站seo的核心工作
  • 福清市建设局网站黑帽seo培训大神
  • 站长之家99远洋国际一期官方网站建设
  • 电子商务网站开发岗位职责flash网站设计
  • 为什么做手机网站如何做一个网站推广自己的产品
  • 怎么做公司网站制作wordpress 获取页面
  • 自适应网站建设方案泉州有专门帮做网站的吗
  • 支付招聘网站怎么做费用wordpress胖子马
  • 张家界做网站美工公司客户管理软件多少钱
  • 建网站石家庄先进网站建设流程
  • 智慧团建如何转团关系阿里网站seo
  • 网站建设一条龙全包个人如何建立网站