SpringBoot全局异常处理方法

由于用Controller写try和catch来捕获异常的方法可能要重复写很多次,代码很冗余,故采用全局异常捕获的方法:

新建一个GlobalExceptionHandler的捕获异常的类:

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.sql.SQLIntegrityConstraintViolationException;
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {
    /**
     * 异常处理方法
     * @return
     */
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex){
        log.error(ex.getMessage());
        if(ex.getMessage().contains("Duplicate entry")){
            String[] split = ex.getMessage().split(" ");
            String msg = split[2] + "已存在";
            return R.error(msg);
        }
        return R.error("未知错误");
    }
}

其中,@Slf4j是日志打印注解,@ControllerAdvice(annotations = {RestController.class, Controller.class}指的是标注有RestController和Controller的类都在该异常捕获的范围内;

SQLIntegrityConstraintViolationException是数据库的异常类,if判断当error message包含"Duplicate entry"时,表明是由于不可重复属性重复导致的错误,比如两个人都叫zhangsan,单但先前在数据库中设定username为不可重复属性,此时便会报错。返回错误信息R.error。R是自己定义的结果类,包含success和error方法。

相关推荐

  1. SpringBoot全局异常处理方法

    2024-03-24 13:30:02       21 阅读
  2. SpringBoot全局异常处理

    2024-03-24 13:30:02       28 阅读
  3. Springboot全局异常处理

    2024-03-24 13:30:02       31 阅读
  4. springboot全局处理sql异常

    2024-03-24 13:30:02       7 阅读
  5. Springboot自定义全局异常处理

    2024-03-24 13:30:02       33 阅读
  6. Springboot整合hibernate validator 全局异常处理

    2024-03-24 13:30:02       31 阅读
  7. springboot全局异常处理和自定义异常处理

    2024-03-24 13:30:02       44 阅读
  8. SpringBoot实现自定义异常+全局异常统一处理

    2024-03-24 13:30:02       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-24 13:30:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-24 13:30:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-24 13:30:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-24 13:30:02       20 阅读

热门阅读

  1. 【Node.js】events

    2024-03-24 13:30:02       21 阅读
  2. 【jvm】young gc full gc

    2024-03-24 13:30:02       16 阅读
  3. Python爬虫之urllib库

    2024-03-24 13:30:02       18 阅读
  4. 游戏中线上已有功能迭代的兼容问题

    2024-03-24 13:30:02       17 阅读
  5. Python爬虫之requests库

    2024-03-24 13:30:02       16 阅读
  6. LeetCode热题Hot100-两数之和

    2024-03-24 13:30:02       18 阅读
  7. centos配置natapp 自动配置

    2024-03-24 13:30:02       18 阅读
  8. Vue3组件之间通信方式

    2024-03-24 13:30:02       21 阅读