spingboot定义一个全局异常处理器

java 复制代码
package com.itheima.exception;

import com.itheima.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.sql.SQLIntegrityConstraintViolationException;

/**
 * 全局异常处理器
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

    /**
     * 处理数据库完整性约束异常(如手机号、用户名重复)
     */
    @ExceptionHandler
    public Result handleSQLIntegrityConstraintViolationException(SQLIntegrityConstraintViolationException e) {
        log.error("数据库完整性约束异常: {}", e.getMessage());
        String message = e.getMessage();
        if (message != null && message.contains("Duplicate entry")) {
            // 提取冲突的值, 报错格式: Duplicate entry '13800000001' for key 'phone'
            String value = message.split(" ")[2].replace("'", "");
            if (value.isEmpty()) {
                return Result.error("手机号/用户名等唯一字段为空或重复, 请检查提交的数据");
            }
            return Result.error(value + " 已存在");
        }
        return Result.error("数据库操作失败");
    }

    /**
     * 兜底处理所有其他异常
     */
    @ExceptionHandler(Exception.class)
    public Result handleException(Exception e) {
        log.error("程序运行出现异常: ", e);
        return Result.error("系统繁忙, 请稍后重试");
    }
}
相关推荐
西柚小萌新1 分钟前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
北极有牛4 分钟前
cpp学习笔记--常量指针
java·开发语言·算法
java资料站11 分钟前
二、Spring AI Alibaba · ChatModel
java·windows·spring
十年Java程序媛35 分钟前
Java 接口和抽象类对比|Java8 新特性,抛弃老旧八股,正确选型
java·spring boot·后端
caoerzhong37 分钟前
JeeWMS 开源 WMS 部署避坑指南:Java 仓库管理系统的环境基线、四类根因与可复现交付
java·开发语言·开源
用户37215742613537 分钟前
Java 合并 PDF 文件:完整合并、指定页面合并与流合并
java
for_ever_love__1 小时前
MySQL 全文索引实战:FULLTEXT、ngram 中文分词与 MATCH AGAINST 到底该怎么用
java·python·mysql·全文检索·分词·索引·ngram
java资料站1 小时前
五、Spring AI Alibaba · Memory · Saver(短期会话)
java·spring·microsoft
夜之眷属2 小时前
Core dump 崩溃排查:JVM 宕机后,那份 core 文件怎么用 gdb 还原现场
java·运维·服务器·jvm
波加曼大王2 小时前
# vLLM不要迷信PagedAttention神话,聊聊线上藏着的内部碎片陷阱
java·架构