今日代码大赏 | 统一异常处理类

一个完整的后端服务,异常处理是至关重要的环节。异常处理不仅涉及到系统的稳定性,还关系到用户体验。在SpringBoot 中,通过使用@ControllerAdvice@ExceptionHandler注解,我们可以轻松地实现全局异常处理。

上期,我们在 SpringBoot 中实现了统一返回结果类,统一异常处理类和统一返回结果类都是一个完整的后端服务必不可少的。有需要回顾 SpringBoot 实现了统一返回结果类,可以点击下方文章标题,即可跳转对应文章哦!

今日代码大赏 | 统一结果返回类

今天,我们就来了解如何在 SpringBoot 中创建一个统一的异常处理类。示例代码如下:

@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {

    // 处理所有未指定的异常
    @ExceptionHandler(Exception.class)
    public ResponseEntity<Result> handleException(Exception e) {
        Result result = new Result<>();
        result.setSuccess(false);
        result.setMessage("服务器内部错误");
        result.setCode(500);

        // 记录日志,便于问题追踪
        log.error("发生异常:", e);

        // 返回统一的错误响应
        return new ResponseEntity<>(result, HttpStatus.INTERNAL_SERVER_ERROR);
    }

    // 处理自定义异常
    @ExceptionHandler(CustomException.class)
    public ResponseEntity<Result> handleCustomException(CustomException e) {
        Result result = new Result<>();
        result.setSuccess(false);
        result.setMessage(e.getMessage());
        result.setCode(e.getCode());

        // 记录日志
        log.error("发生自定义异常:", e);

        // 返回统一的错误响应
        return new ResponseEntity<>(result, HttpStatus.BAD_REQUEST);
    }
}

在上面的代码中,我们定义了一个名为 GlobalExceptionHandler 的类,并使用@ControllerAdvice注解来指定这是一个全局异常处理器。@ExceptionHandler注解用于指定该方法处理的异常类型。对于所有未被捕获的通用异常,我们使用 Exception.class 来捕获并处理。对于自定义的异常 CustomException ,我们则返回更具体的异常信息和状态码。

今天的代码大赏就到这里了。希望通过这篇文章,你能够对在 SpringBoot 中实现一个统一异常处理类有一个更深入的理解。

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/fi8ebr

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

这个 404 页面,是真的炫酷~

今日代码大赏 | 统一结果返回类

今日代码大赏 | 懒汉式单例模式

今日代码大赏 | Java 实现归并排序算法

今日代码大赏 | Python 实现二分查找算法

相关推荐

  • 后端知识那么多,重点要学啥?
  • 练习两年半,我们的项目更丰富啦!
  • 性能提升 30%!中国电信进一步开源 12B 星辰大模型 TeleChat-12B!
  • 估值8年涨1200倍,喜马拉雅要IPO了
  • 药物分子设计新策略,微软条件扩散模型DiffLinker登Nature子刊
  • CVPR 2024 | 字节提出新一代数据集COCONut,比COCO粒度分割更密集
  • 大模型一定就比小模型好?谷歌的这项研究说不一定
  • Transformer本可以深谋远虑,但就是不做
  • Llama 3超大杯有何惊喜?Meta会一直开源吗?当初为何笃信元宇宙?扎克伯格新访谈回应一切
  • 开源模型打败GPT-4!LLM竞技场最新战报,Cohere Command R+上线
  • 清华叉院教授扔出量子密码学重磅炸弹!论文引业界轰动,但算法被发现bug
  • 北大图灵班00后学子夺得五金!北大荣获国际大学生程序设计竞赛全球总冠军
  • CVPR 2024 | 中大哈佛等提出全新训练方法CLoT,探究大模型幽默创新力
  • 60万奖金!2024全球人工智能技术创新大赛-算法挑战赛,等你来战!
  • 腾讯视频指标中台驱动湖仓一体建设实践
  • 为什么梯度提升表现如此出色?
  • 又一款好用的AI视频工具——硅语AI火了!
  • 校名确定!理工学院,将更名
  • 21张让你代码能力突飞猛进的速查表(神经网络、线性代数、可视化等)
  • 可能是最详细最清晰的logistic回归算法原理讲解了