pull/4/head
zhouyu 10 months ago
parent 64358de085
commit 8631c76d81

@ -14,19 +14,33 @@ import org.springframework.web.bind.annotation.ResponseBody;
* @CONTACT 317758022@qq.com
* @DESC
*/
// @ControllerAdvice注解用于定义全局的异常处理类它可以对多个Controller中的异常进行统一处理增强了代码的健壮性和异常处理的集中性。
@ControllerAdvice
// @ResponseBody注解表示该类中处理异常的方法返回的结果会直接写入HTTP响应的正文比如以JSON格式等而不是去寻找视图进行解析渲染。
@ResponseBody
// 使用lombok的@Slf4j注解自动生成日志相关代码方便在类中记录异常相关的详细信息便于后续排查问题。
@Slf4j
public class ExceptionHandlerAdvice {
// @ExceptionHandler注解用于指定该方法处理的异常类型这里表示这个方法会处理所有继承自Exception类的异常也就是几乎所有的异常情况
// 当捕获到Exception类型的异常时会进入这个方法进行处理。
@ExceptionHandler(Exception.class)
public ServerResponse handleException(Exception e){
// 使用日志记录异常的详细信息,包括异常消息和异常堆栈信息,方便开发人员定位问题所在。
log.error(e.getMessage(),e);
// 通过ServerResponse的静态方法创建一个包含错误信息的响应对象使用了Constants类中定义的表示服务器内部错误的状态码RESP_STATUS_INTERNAL_ERROR
// 并设置相应的错误提示消息,告知客户端系统出现异常,让其稍后再试,最后将这个响应对象返回,客户端将会收到对应的错误响应信息。
return ServerResponse.createByErrorCodeMessage(Constants.RESP_STATUS_INTERNAL_ERROR,"系统异常,请稍后再试");
}
// 同样使用@ExceptionHandler注解不过这里指定处理的是SnailmallException类型的异常这应该是项目自定义的一种异常类型。
// 当出现这种特定的异常时,会执行这个方法来进行针对性处理。
@ExceptionHandler(SnailmallException.class)
public ServerResponse handleException(SnailmallException e){
// 记录该自定义异常的详细信息到日志中,方便后续查看异常出现的原因等情况。
log.error(e.getMessage(),e);
// 通过ServerResponse的静态方法创建响应对象使用自定义异常中携带的状态码通过e.getExceptionStatus()获取以及异常消息e.getMessage())来构建响应,
// 然后将这个响应返回给客户端,以便客户端根据具体的状态码和消息进行相应处理。
return ServerResponse.createByErrorCodeMessage(e.getExceptionStatus(),e.getMessage());
}

Loading…
Cancel
Save