• 如何进行统一异常处理


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

    • 定义全局异常处理类GlobalExceptionHandler,并在类上添加@ControllerAdvice注解,在异常方法上添加@ExceptionHandler注解。
        1. package com.app.studypro.common;
        2. import lombok.extern.slf4j.Slf4j;
        3. import org.springframework.web.bind.annotation.ControllerAdvice;
        4. import org.springframework.web.bind.annotation.ExceptionHandler;
        5. import org.springframework.web.bind.annotation.ResponseBody;
        6. import java.sql.SQLIntegrityConstraintViolationException;
        7. /**
        8. * 统一异常处理逻辑
        9. *
        10. * @author Administrator
        11. */
        12. @Slf4j
        13. @ResponseBody
        14. @ControllerAdvice
        15. public class GlobalExceptionHandler {
        16. /**
        17. * 保存方法时触发的唯一性异常处理方法
        18. *
        19. * @param exception 错误
        20. * @return 返回异常信息
        21. */
        22. @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
        23. public ResultBean exceptionHandler(SQLIntegrityConstraintViolationException exception) {
        24. log.error(exception.getMessage());
        25. if (exception.getMessage().contains("Duplicate entry")) {
        26. String[] split = exception.getMessage().split(" ");
        27. String msg = split[2] + "已存在";
        28. return ResultBean.error(msg);
        29. }
        30. return ResultBean.error("未知错误");
        31. }
        32. /**
        33. * 自定义的异常处理方法
        34. *
        35. * @param exception 错误
        36. * @return 返回异常信息
        37. */
        38. @ExceptionHandler(CustomException.class)
        39. public ResultBean exceptionHandler(CustomException exception) {
        40. log.error(exception.getMessage());
        41. return ResultBean.error(exception.getMessage());
        42. }
        43. }

  • 相关阅读:
    门面模式简介
    MogaFX—乐观的通胀报告意味着美元刚刚经历了15年来最糟糕的一天
    元宇宙的气味体验有哪些可能?#共创招募
    MySQL存储引擎
    Windows下QT实现托盘程序及系统托盘刷新
    Leetcode 2269. 找到一个数字的 K 美丽值(滑动窗口)
    Linux---(七)Makefile写进度条(三个版本)
    LoadBalancer
    abaqus在仿真过程中中断了,这是为什么
    javaScript高级
  • 原文地址:https://blog.csdn.net/weixin_41926152/article/details/134481912