【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("出错了,请联系管理员!");
    }
}
相关推荐
kmomo..2 分钟前
Linux SPI 驱动开发学习笔记:从框架到实战
linux·驱动开发·学习
用户094248568032 分钟前
第37章:JVM极端场景调优与生产故障复盘方法论
java·jvm
知守观2 分钟前
同事的 SNAPSHOT 更新了,我三天后才拉到:Maven 更新检查被 _remote.repositories 静默跳过
java·后端·maven
Wang's Blog3 分钟前
Java 项目实战: 交友项目 - 项目模块划分与依赖关系
java·开发语言·交友
努力进修4 分钟前
时序数据长期承载难题:从压缩、批量写入到数据组织优化
java·开发语言·数据库
Dovis(誓平步青云)9 分钟前
总用电下降了,为什么家庭能源看板仍然提示异常
java·开发语言·数据库·人工智能·算法·电脑·能源
程序猿乐锅9 分钟前
【从0-1学习Python | 第四篇】Python 字符串和元组
java·开发语言·笔记·后端·python·学习
开开心心就好13 分钟前
Windows视频播放器推荐,精简版体积更小
java·服务器·开发语言·eclipse·pdf·ocr·音视频
li星野23 分钟前
【学习记录】DAP调试器电路原理图完全详解:从STM32最小系统到SWD调试接口
stm32·嵌入式硬件·学习
诸神缄默不语32 分钟前
小春学习日刊 2026年第2期:2026.10.14
学习