异常处理注解 @ExceptionHandler

2024-01-14 15:52

本文主要是介绍异常处理注解 @ExceptionHandler,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天记录下 SpringBoot 中 @ExceptionHandler 的使用。

场景

有一个员工表(employee),且给表中的 username 属性设置了唯一性。

-- auto-generated definition
create table employee
(id          bigint auto_increment comment '主键'primary key,name        varchar(32)   not null comment '姓名',username    varchar(32)   not null comment '用户名',password    varchar(64)   not null comment '密码',phone       varchar(11)   not null comment '手机号',sex         varchar(2)    not null comment '性别',id_number   varchar(18)   not null comment '身份证号',status      int default 1 not null comment '状态 0:禁用,1:启用',create_time datetime      null comment '创建时间',update_time datetime      null comment '更新时间',create_user bigint        null comment '创建人',update_user bigint        null comment '修改人',constraint idx_usernameunique (username)
)comment '员工信息' collate = utf8_bin;

我想通过新增员工功能添加一个员工,但是当添加用户名重复时会报以下错误。
IDEA报错
IDEA报错
API接口报错
swagger报错

处理

可以看到前端并没有返回具体的报错信息,此时我们想要把 用户名重复 的错误返回给前端就可以用到 @ExceptionHandler 注解来实现。
先写一个类并添加 @RestControllerAdvice 注解来捕获异常,编写一个方法并添加 @ExceptionHandler 注解使其能够捕获我们想要捕获的错误类型(方法参数里面使我们想要捕获的错误类型)。
根据上面 IDEA 截图的报错可以看到报错的类型为 “SQLIntegrityConstraintViolationException”,报错信息为 " Duplicate entry ‘zhangsan’ for key ‘employee.idx_username’ ",

package com.sky.handler;import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import java.sql.SQLIntegrityConstraintViolationException;/*** 全局异常处理器,处理项目中抛出的业务异常*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {// 处理重复用户名错误@ExceptionHandlerpublic Result exceptionHandler(SQLIntegrityConstraintViolationException ex){// 得到报错信息:Duplicate entry 'zhangsan' for key 'employee.idx_username'String message = ex.getMessage();// 判断是否是重复数据异常if (message.contains("Duplicate")) {// 得到重复的用户名String[] split = message.split(" ");String userName = split[2];return Result.error("用户名已存在:" + userName);}// 若不是重复数据异常,则返回默认的错误信息else{return Result.error("位置错误");}}
}

结果

此时再添加重复员工信息时就会返回具体信息。
API接口界面
前端接口界面
IDEA界面
可以看到此时IDEA控制台界面就不会在报错了,因为我们已经将这个错误正常处理了。
IDEA界面

这篇关于异常处理注解 @ExceptionHandler的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/605701

相关文章

Python利用PySpark和Kafka实现流处理引擎构建指南

《Python利用PySpark和Kafka实现流处理引擎构建指南》本文将深入解剖基于Python的实时处理黄金组合:Kafka(分布式消息队列)与PySpark(分布式计算引擎)的化学反应,并构建一... 目录引言:数据洪流时代的生存法则第一章 Kafka:数据世界的中央神经系统消息引擎核心设计哲学高吞吐

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Java异常捕获及处理方式详解

《Java异常捕获及处理方式详解》异常处理是Java编程中非常重要的一部分,它允许我们在程序运行时捕获并处理错误或不预期的行为,而不是让程序直接崩溃,本文将介绍Java中如何捕获异常,以及常用的异常处... 目录前言什么是异常?Java异常的基本语法解释:1. 捕获异常并处理示例1:捕获并处理单个异常解释:

MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)

《MyBatis的xml中字符串类型判空与非字符串类型判空处理方式(最新整理)》本文给大家介绍MyBatis的xml中字符串类型判空与非字符串类型判空处理方式,本文给大家介绍的非常详细,对大家的学习或... 目录完整 Hutool 写法版本对比优化为什么status变成Long?为什么 price 没事?怎

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Python调用LibreOffice处理自动化文档的完整指南

《Python调用LibreOffice处理自动化文档的完整指南》在数字化转型的浪潮中,文档处理自动化已成为提升效率的关键,LibreOffice作为开源办公软件的佼佼者,其命令行功能结合Python... 目录引言一、环境搭建:三步构建自动化基石1. 安装LibreOffice与python2. 验证安装

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Java.lang.InterruptedException被中止异常的原因及解决方案

《Java.lang.InterruptedException被中止异常的原因及解决方案》Java.lang.InterruptedException是线程被中断时抛出的异常,用于协作停止执行,常见于... 目录报错问题报错原因解决方法Java.lang.InterruptedException 是 Jav

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON: