• 如何进行统一异常处理


           我们在项目中可以使用@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. }

  • 相关阅读:
    运维管理有什么实用的技巧吗
    【Qt按钮基类】QAbstractButton[ 所有按钮基类 ]
    【Web】在前端中,HTML<meta>标签
    Java --- IO流
    界面控件Telerik UI for WPF——Windows 11主题精简模式提升应用体验
    指标与标签的区别?
    ChatGPT的原理与前端领域实践 | 京东云技术团队
    Yarn安装报错和使用
    SpringCloudGateway工作原理与链路图
    python加密字符串安全保护你的数据
  • 原文地址:https://blog.csdn.net/weixin_41926152/article/details/134481912