如何进行统一异常处理

我们在项目中可以使用@ControllerAdvice注解结合@ExceptionHandler用于全局异常的处理,@ControllerAdvice学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理。此注解结合方法型注解@ExceptionHandler,可用于捕获Controller中抛出的指定类型的异常,从而达到不同类型的异常区别处理的目的。

  • 定义全局异常处理类GlobalExceptionHandler,并在类上添加@ControllerAdvice注解,在异常方法上添加@ExceptionHandler注解。
    *

    java 复制代码
    package com.app.studypro.common;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import java.sql.SQLIntegrityConstraintViolationException;
    
    /**
     * 统一异常处理逻辑
     *
     * @author Administrator
     */
    @Slf4j
    @ResponseBody
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        /**
         * 保存方法时触发的唯一性异常处理方法
         *
         * @param exception 错误
         * @return 返回异常信息
         */
        @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
        public ResultBean<String> exceptionHandler(SQLIntegrityConstraintViolationException exception) {
            log.error(exception.getMessage());
            if (exception.getMessage().contains("Duplicate entry")) {
                String[] split = exception.getMessage().split(" ");
                String msg = split[2] + "已存在";
                return ResultBean.error(msg);
            }
            return ResultBean.error("未知错误");
        }
    
        /**
         * 自定义的异常处理方法
         *
         * @param exception 错误
         * @return 返回异常信息
         */
        @ExceptionHandler(CustomException.class)
        public ResultBean<String> exceptionHandler(CustomException exception) {
            log.error(exception.getMessage());
            return ResultBean.error(exception.getMessage());
        }
    
    }
相关推荐
xieliyu.5 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
星辰徐哥5 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥5 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约5 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee5 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐5 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs5 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐5 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司5 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
一条小锦吕*6 小时前
基于Spring Boot + 数据可视化 + 协同过滤算法的推荐系统设计与实现(源码+论文+部署全讲解)
spring boot·算法·信息可视化