pull/4/head
zhouyu 9 months ago
parent ee99f6c712
commit 1a34ada1ea

@ -14,19 +14,28 @@ import org.springframework.web.bind.annotation.ResponseBody;
* @CONTACT 317758022@qq.com
* @DESC
*/
// 使用Spring框架的@ControllerAdvice注解表明这个类是一个全局的异常处理类它可以拦截并处理在整个应用中由Spring管理的控制器Controller抛出的异常能够统一对异常情况进行处理避免在每个控制器方法中都单独编写异常处理逻辑使代码更加简洁和易于维护。
@ControllerAdvice
// 使用@ResponseBody注解结合@ControllerAdvice注解意味着这个类中处理异常的方法返回的结果会直接作为响应体ResponseBody返回给客户端通常是以JSON等格式的数据进行响应方便客户端获取异常相关的信息并进行相应展示或处理。
@ResponseBody
// 使用lombok的@Slf4j注解用于自动生成日志相关的代码方便在类中记录各种异常相关的日志信息便于后续查看异常情况以及进行问题排查比如记录异常的详细信息、错误消息等有助于定位和解决出现的问题。
@Slf4j
public class ExceptionHandlerAdvice {
// 使用Spring的@ExceptionHandler注解指定这个方法用于处理Exception类型的异常也就是可以捕获所有未被更具体的异常处理器处理的异常情况它是一种兜底的异常处理方式确保任何未被处理的异常都能在这里被统一处理避免程序因异常而崩溃。
@ExceptionHandler(Exception.class)
public ServerResponse handleException(Exception e){
// 使用日志记录异常的详细信息通过log.error方法记录异常的消息内容e.getMessage()以及完整的异常堆栈信息e方便后续查看具体的异常原因和出现异常的位置等情况有助于进行问题排查和定位。
log.error(e.getMessage(),e);
// 创建并返回一个ServerResponse类型的响应对象调用ServerResponse的静态方法createByErrorCodeMessage传入自定义的系统内部错误状态码Constants.RESP_STATUS_INTERNAL_ERROR通常表示服务器内部出现了问题以及提示客户端的消息"系统异常,请稍后再试"),告知客户端请求处理出现了系统级别的异常,让客户端可以根据这个提示信息进行相应的操作,比如提示用户稍后重新发起请求等。
return ServerResponse.createByErrorCodeMessage(Constants.RESP_STATUS_INTERNAL_ERROR,"系统异常,请稍后再试");
}
// 使用@ExceptionHandler注解指定这个方法用于处理SnailmallException类型的异常这是一个自定义的异常类型意味着当应用中抛出了这个特定类型的异常时会由这个方法来进行专门的处理相较于处理通用Exception类型的异常这里可以根据自定义异常的特点进行更针对性的响应处理。
@ExceptionHandler(SnailmallException.class)
public ServerResponse handleException(SnailmallException e){
// 同样记录异常的详细信息到日志中,方便后续排查问题,记录异常的消息内容以及完整的异常堆栈信息。
log.error(e.getMessage(),e);
// 创建并返回一个ServerResponse类型的响应对象调用ServerResponse的静态方法createByErrorCodeMessage传入自定义异常中携带的状态码e.getExceptionStatus()通常自定义异常会根据不同的业务场景设置不同的状态码来表示具体的错误情况以及异常的消息内容e.getMessage()),这样可以将更具体的错误信息和对应的状态码返回给客户端,让客户端能够准确知晓出现的具体问题并进行相应处理。
return ServerResponse.createByErrorCodeMessage(e.getExceptionStatus(),e.getMessage());
}

Loading…
Cancel
Save