全局异常处理类

全局异常处理类

创建步骤

  1. 定义一个自己的全局错误处理类GlobalExceptionHandler
  2. 创建一个ExceptionHandler类,主要是用@ControllerAdvice和 @ExceptionHandler处理错误信息
    以下说明各个注解的作用:
    • @ControllerAdvice(annotations = {RestController.class, Controller.class })//表示拦截类上加了RestController和Controller注解的controller
    • @ResponseBody//如果有方法需要返回json数据的就需要加上此注解,最终把结果封装成json数据返回
    • @Slf4j //写日志
    • @ExceptionHandler(SQLIntegrityConstraintViolationException.class)//表示这个方法处理的就是 SQLIntegrityConstraintViolationException中的错误信息,根据错误类型定
  3. 以上完成的是基本的异常处理,之后会通过枚举实现一些常用错误的封装,因为考虑到会有很多常用的报错信息,为了降低代码的重复和方便将来批量修改,在此基础上改动。

源代码示例

/*** 全局异常处理*/
@ControllerAdvice(annotations = {RestController.class, Controller.class })//表示拦截类上加了RestController和Controller注解的controller
@ResponseBody//如果有方法需要返回json数据的就需要加上此注解,最终把结果封装成json数据返回
@Slf4j //写日志
public class GlobalExceptionHandler {/*** 异常处理方法* 一旦抛出SQLIntegrityConstraintViolationException这个异常,统一再次拦截处理* @return*/@ExceptionHandler(SQLIntegrityConstraintViolationException.class)public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){log.info(ex.getMessage());if(ex.getMessage().contains("Duplicate entry")){String[] split = ex.getMessage().split(" ");String msg = split[2] + "已存在";return R.error(msg);}return R.error("未知错误");}
}

结果展示

在这里插入图片描述

未完待续!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231015.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Django+Tensorflow卷积神经网络鸟类识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介系统概述系统功能核心技术系统架构系统优势 二、功能三、系统四. 总结  总结 一项目简介 介绍一个基于DjangoTensorflow卷积神经网络鸟类识别系统是一个非…

8.3 Windows驱动开发:内核遍历文件或目录

在笔者前一篇文章《内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作&#xff0c;本章我们将实现内核下遍历文件或目录这一功能&#xff0c;该功能的实现需要依赖于ZwQueryDirectoryFile这个内核API函数来实现&#xff0c;该函数可返回给定文件句柄指定的…

MyBatis使用教程详解<下>

回顾上一篇博文,我们讲了如何使用注解/XML的方式来操作数据库,实际上,一个Mapper接口的实现,这两种方式是可以并存的. 上一篇博文中,我们演示的都是比较简单的SQL语句,没有设计到复杂的逻辑,本篇博文会讲解复杂SQL的实现及一些细节处理.话不多说,让我们开始吧. 一. #{}和${} …

软文推广中什么样的热点值得追?

只要媒体存在一日&#xff0c;那世界上就不会缺热点&#xff0c;追热点应该是每个运营er的必备技能&#xff0c;但是市面上的热点层出不穷&#xff0c;什么样的热点才值得追呢&#xff1f;接下来媒介盒子就和大家聊聊&#xff1a;判断热点值不值得追的三大要素。 一、 事件属性…

竞赛选题 题目:基于深度学习的中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分&#xff1a;4.2 损失函数&#xff1a;4.3 搭建seq2seq框架&#xff1a;4.4 测试部分&#xff1a;4.5 评价NLP测试效果&#xff1a;4.6 梯度截断…

视图层与模板层

视图层 1 视图函数 一个视图函数&#xff0c;简称视图&#xff0c;是一个简单的Python 函数&#xff0c;它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容&#xff0c;一个重定向&#xff0c;一个404错误&#xff0c;一个XML文档&#xff0c;或者一张图片. . . 是…

基于AOP的声明式事物控制

目录 Spring事务编程概述 基于xml声明式事务控制 事务属性 isolation timeout read-only propagation 全注解开发 Spring事务编程概述 事务是开发中必不可少的东西&#xff0c;使用JDBC开发时&#xff0c;我们使用connection对事务进行控制&#xff0c;使用MyBatis时&a…

接口测试【加密解密攻防完整版】实战教程详解

一、对称加密 对称加密算法是共享密钥加密算法&#xff0c;在加密解密过程中&#xff0c;使用的密钥只有一个。发送和接收双方事先都知道加密的密钥&#xff0c;均使用这个密钥对数据进行加密和解密。 数据加密&#xff1a;在对称加密算法中&#xff0c;数据发送方将明文 (原…

html5各行各业官网模板源码下载(1)

文章目录 1.来源2.源码模板2.1 HTML5白色简洁设计师网站模板 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134682321 html5各行各业官网模板源码下载&#xff0c;这个主题覆盖各行业的html官网模板&#xff0c;效果模…

C++学习寄录(八.继承)

继承的语法&#xff1a;class 子类 : 继承方式 父类 class A : public B; A 类称为子类 或 派生类 B 类称为父类 或 基类 1.基本使用 未使用继承的代码比较冗余重复 #include <iostream> #include <fstream> #include <string> #include <chrono>…

【计算机网络】虚拟路由冗余(VRRP)协议原理与配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol&#xff0c;简称VRRP)是由IETF…

ArkTS-DevEco Studio打开预览器报错

下载官网Codelab案例&#xff0c;打开预览器报错 Failed to start the service process. Make sure the path specified by nodejs.dir in the local.properties file is correct. 解决方案 在编辑器设置中找到node安装路径 将" local.properties"文件中的"nod…