【JavaWeb后端学习笔记】Spring全局异常处理器

在程序运行时,不可避免的会出现异常。在三层开发架构中,当Mapper层出现异常、如果不进行处理会抛给Service层,如果Service层也不处理则会抛给Controller层,通常Controller层有许多接口,如果对每个接口单独处理异常,则代码会非常臃肿和繁琐。

在处理异常时,相同类型的异常处理方式相似,因此可以将相同的异常归类,使用一样的处理逻辑处理这类异常。

这样一来可以定义一个全局异常处理器,当Controller层、Service层、Mapper层都不对异常进行处理时,框架会把异常抛给全局异常处理器进行处理。在全局异常处理器中,可以定义多个异常处理方法,每个方法可以针对不同类型的异常进行处理。

自定义全局异常处理器分3步:

  1. 定义一个类,在类上加@RestControllerAdvice注解,声明这是一个全局异常处理器。
  2. 在类中定义一个全局异常处理方法。方法上加@ExceptionHandler注解定义异常处理方法,注解中需要指定该方法处理的异常类型的字节码文件,也就是类名.class。在方法形参中传入该类异常对象。方法返回值推荐统一使用Resful开发风格,返回一个Result对象,方便前端处理。
  3. 处理异常。在方法中可以打印出错误堆栈信息,编写异常处理代码。返回Result.error("自定义错误提示信息...")对象。
java 复制代码
@RestControllerAdvice // 声明全局异常处理器类
public class GlobalExceptionHandler {

    @ExceptionHandler(Exception.class) // 指定捕获的异常类型,这里捕获所有异常
    public Result<String> ex(Exception ex) {
        // 异常处理逻辑...
        ex.printStackTrace();
        return Result.error("出错了,请联系管理员!");
    }
}
相关推荐
Filthyfrank几秒前
I2C vs I3C时序差异
学习
李福春8 分钟前
斗破Google ADK Java苍穹-第5境斗灵-凝物通脉-Context与State
java·开发语言·人工智能·java-ee·google adk·深圳同盟·腾讯云架构师技术同盟
十年Java程序媛9 分钟前
Java 接口和抽象类对比|抛弃老旧八股,正确选型
java·开发语言·spring boot·后端
范中勤11 分钟前
OSS 多文件打包回流上传:流式管道无落地 VS 临时磁盘落地,两种工业方案深度对比
java·高并发·zip·oss·架构选型
无毁的湖光-Al13 分钟前
解Bug之路-隔离故障点后业务不恢复?-热点Key处理与亚稳态故障
java·数据库·mysql
yi01115 分钟前
LeetCode 3. 无重复字符的最长子串|不定长滑动窗口:什么时候更新最大值?
笔记·python·算法·leetcode·双指针·滑动窗口
Eyfcom19 分钟前
快递管理系统中的电子围栏实战:高德与谷歌双平台技术选型与实现
java·后端·快递管理系统
Rain的Java大神之路20 分钟前
Java PDF导出,90%的人选错库!11个生产坑+选型+代码,一次讲透
java·后端·面试
Water_based22 分钟前
水性滚涂漆应用于滚喷机小五金件喷涂工艺详解
经验分享·笔记·产品经理
y1su22 分钟前
Leetcode 单调栈模板
java·开发语言·数据结构·算法·leetcode