一个完整的后端服务,异常处理是至关重要的环节。异常处理不仅涉及到系统的稳定性,还关系到用户体验。在SpringBoot 中,通过使用
@ControllerAdvice
和
@ExceptionHandler
注解,我们可以轻松地实现全局异常处理。
上期,我们在 SpringBoot 中实现了统一返回结果类,统一异常处理类和统一返回结果类都是一个完整的后端服务必不可少的。有需要回顾 SpringBoot 实现了统一返回结果类,可以点击下方文章标题,即可跳转对应文章哦!
今天,我们就来了解如何在 SpringBoot 中创建一个统一的异常处理类。示例代码如下:
@Slf4j
@ControllerAdvice
public classGlobalExceptionHandler {
// 处理所有未指定的异常
@ExceptionHandler(Exception. class)
public ResponseEntity<Result> handleException(Exception e) {
Resultresult = newResult<>();
result.setSuccess(false);
result.setMessage("服务器内部错误");
result.setCode(500);
// 记录日志,便于问题追踪
log.error("发生异常:", e);
// 返回统一的错误响应
returnnewResponseEntity<>(result, HttpStatus.INTERNAL_SERVER_ERROR);
}
// 处理自定义异常
@ExceptionHandler(CustomException. class)
public ResponseEntity<Result> handleCustomException(CustomException e) {
Resultresult = newResult<>();
result.setSuccess(false);
result.setMessage(e.getMessage());
result.setCode(e.getCode());
// 记录日志
log.error("发生自定义异常:", e);
// 返回统一的错误响应
returnnewResponseEntity<>(result, HttpStatus.BAD_REQUEST);
}
}
在上面的代码中,我们定义了一个名为 GlobalExceptionHandler 的类,并使用
@ControllerAdvice
注解来指定这是一个全局异常处理器。
@ExceptionHandler
注解用于指定该方法处理的异常类型。对于所有未被捕获的通用异常,我们使用 Exception. class 来捕获并处理。对于自定义的异常 CustomException ,我们则返回更具体的异常信息和状态码。
今天的代码大赏就到这里了。希望通过这篇文章,你能够对在 SpringBoot 中实现一个统一异常处理类有一个更深入的理解。
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/fi8ebr
在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~
往期推荐