在编写管理系统时,新增用户的功能会出现新增用户账号已存在的问题

java.sql.SQLIntegrityConstraintViolationException: Duplicate entry 'zhangsan' for key 'employee.idx_username'

因为数据表中的username字段有唯一约束,所以这个异常是从数据库抛出来的

处理方式:

1.在Controller方法中加入try、catch进行异常捕获

这种try catch来捕获异常固然好,但是,代码量一大起来,超级多的try catch就会很乱

2.使用异常处理器进行全局异常捕获

建议使用这种方法

所以我们要加入全局异常处理,在Common包下

package com.itheima.reggie.common;
​
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
​
import java.sql.SQLIntegrityConstraintViolationException;
​
/*** 全局异常处理* @author lj* @create 16:31*/
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {/*** 异常处理方法* @return*/@ExceptionHandler(SQLIntegrityConstraintViolationException.class)public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){log.error(ex.getMessage());return R.error("失败了");}
}

控制台输出日志:

ERROR 15788 --- [nio-8080-exec-7] c.i.r.common.GlobalExceptionHandler : Duplicate entry 'zhangsan' for key 'employee.idx_username'

当报错信息出现Duplicate entry时,就意味着新增员工异常了,所以,我们对异常类的方法进行一些更新

public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){log.error(ex.getMessage());
​if(ex.getMessage().contains("Duplicate entry")){String[] split = ex.getMessage().split(" ");//用空格分开String msg = split[2]+"已存在";return R.error(msg);}
​return R.error("未知错误");
}

这时前台也会收到msg的信息了。

新增用户时输入账号已存在(全局异常处理)相关推荐

  1. springmvc高级(拦截器,全局异常处理,文件上传)

    SpringMVC 1.文件上传 文件上传: 指的就是将用户本地计算机中文件上传到服务器上的过程称之为文件上传 1).文件上传编程步骤 # 1.项目中引入相关依赖 <dependency> ...

  2. COSMIC规模度量案例集四:业务应用软件案例—新增用户

    流程图 原型: 1.在用户维护页面点击[新增用户]按钮,进入到新增用户: 输入 序号 输入项 类型 字段描述 说明 机构信息 1. 机构全称 自动匹配输入框 必填 来源于CWAP后台的机构信息:可按照 ...

  3. 数据仓库之【用户行为数仓】08:【dws层:数据汇总层】【appc层:数据应用层】需求1:每日新增用户相关指标

    一.每日新增用户相关指标分析 在统计新增用户时,用户是以设备标识(xaid字段)来判断的,每一个设备都有一个唯一设备码. 因为会存在用户不登录的情况,以及多人共用一个账号的情况,所以根据用户id进行过 ...

  4. 全局异常处理-dao-service-controller-gateway网关工程-集中处理token-登陆模块-获取用户信息-ThreadLocal-组件-项目环境推荐-swagger-knif转发

    1 异常处理 全局异常处理在common模块 为什么要使用全局异常处理:如果没有全局异常处理,比如不可预知的异常(空指针异常),返回浏览器的页面,人看上去就是一大堆乱码,非常的不好看.对人极其不友好, ...

  5. 【用户登录】网关,token,全局异常处理

    用户登录权限验证 一, 登录 Controller层 ServiceImpl层 二,搭建微服务网关 三,统一Token处理 四,网关登录校验 五,在网关模块添加全局过滤器 六,统一token解析 1. ...

  6. bean加载时调用@value时会出现空指针异常_SpringMVC全局异常处理机制

    SpringMVC全局异常处理 SpringMVC除了可以做URL映射和请求拦截外,还可以做全局异常的处理.全局异常处理可能我们平时比较少机会接触,但是每个项目都肯定会做这个处理.比如在上一间公司,是 ...

  7. 解决Linux删除用户时进程占用,及新建账户提示主目录已存在、信箱文件已存在的问题

    解决Linux删除用户时提示进程占用(currently used by process) 文章目录 解决Linux删除用户时提示进程占用(currently used by process) 运行环 ...

  8. 如何制定客户留存策略_深度干货 | 做用户增长时,如何做好新增用户的留存

    作者:韩叙HanXu 来源:运营狗工作日记(ID:yunyingriji) 本文为作者授权鸟哥笔记发布,转载请联系作者并注明出处. 新增用户的留存,是用户增长里非常重要的一环,却很容易被忽视.本文会讲 ...

  9. (翻译)用户的输入已知时,不要使用下拉菜单

      在字段中使用下拉菜单之前应先自问,用户不看下拉项是否知道该填什么内容?如果答案为是,则不要使用下拉菜单,而应采用自动完成方式.   如果用户知道要输入的内容,就没必要让他们在一组下拉项中滚动查看, ...

最新文章

  1. android获取手机通讯录
  2. 自学python推荐书籍2019-2019年Python入门书籍推荐
  3. java native 例子_Java native方法以及JNI实践
  4. Linux socket can例程python版本
  5. Drive Scope for mac(硬盘检查分析工具)
  6. java程序设计基础_陈国君版第五版_第十章习题
  7. python去除图片上的文字_python读取图片里面的文字
  8. WebRTC的NACK和RTX简述
  9. 计算机出现假桌面怎么解决办法,W10电脑下“AppHangXProcB1”导致桌面频繁假死如何解决?...
  10. mysql校对集工具_mysql字符集和校对规则(Mysql校对集)
  11. 手机淘宝客户端架构探索实践
  12. 罗技c930e摄像头描述符
  13. Set_output_delay怎么使用?
  14. oracle系统试算平衡表,oracle数据库中常用的系统表
  15. 混合App WebView自动化测试
  16. 转行做数据分析的心路历程
  17. 利用 SEH 机制 Exploit it
  18. 用數學計算演化原理的科學家:諾瓦克
  19. 三个好用的中文免费刻录软件
  20. 【银行系列第一期】中国人民银行

热门文章

  1. 生活在深圳我们需要的不是叹息与感概
  2. R 分析裂区试验设计
  3. ibm服务器前面板显示屏,ibm_x3500服务器前面板指示灯的含义.doc
  4. 计算机组成原理pc和upc,(完整版)计算机组成原理模拟试题ABC卷.doc
  5. Launching unittests with arguments python -m unittest
  6. 带K线的macd选股指标详解 优化MACD王牌指标 通达信macd选股指标源码
  7. 第一个虚拟仿真项目,冲冲冲
  8. 知乎网页(用php从数据库读取数据)
  9. 如何找到隐式转换的SQL?
  10. 一文说透企业风险管理的三大要素分别是什么