ITPub博客

首页 > 数据库 > 数据库开发技术 > 今日代码大赏 | 统一异常处理类

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

原创 数据库开发技术 作者:程序员鱼皮 时间:2024-04-20 17:26:08 0 删除 编辑

一个完整的后端服务,异常处理是至关重要的环节。异常处理不仅涉及到系统的稳定性,还关系到用户体验。在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 实现二分查找算法

原文作者:程序员鱼皮;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2023-12-20

  • 博文量
    330
  • 访问量
    151689