SpringBoot3配置全局异常类

导入相关包:

  • @Slf4j:Lombok提供的注解,用于自动生成日志记录器。
  • @ControllerAdvice:Spring框架提供的注解,用于定义全局异常处理类。
  • @ExceptionHandler:Spring框架提供的注解,用于处理特定类型的异常。
  • @ResponseBody:Spring框架提供的注解,表示返回结果直接写入HTTP响应体。

使用@Slf4j注解:

  • @Slf4j注解会自动生成一个名为log的日志记录器,方便在类中进行日志记录。

使用@ControllerAdvice注解:

  • @ControllerAdvice注解用于定义全局异常处理类,该类中的方法将应用于所有控制器(Controller)。

处理MethodArgumentNotValidException异常:

  • @ExceptionHandler(value = MethodArgumentNotValidException.class):指定该方法用于处理MethodArgumentNotValidException异常。
  • @ResponseBody:表示返回结果直接写入HTTP响应体。
  • parameterAbnormality方法接收一个MethodArgumentNotValidException异常对象,并返回一个失败的结果(ResResult.fail),并附带异常消息。

处理RuntimeException异常:

  • @ExceptionHandler(value = RuntimeException.class):指定该方法用于处理RuntimeException异常。
  • @ResponseBody:表示返回结果直接写入HTTP响应体。

runTime方法接收一个RuntimeException异常对象,首先记录错误日志(log.error),然后返回一个失败的结果(ResResult.fail),并附带异常消息。
通过这种方式,你可以集中处理应用程序中的各种异常,并提供统一的异常响应格式,从而提高代码的可维护性和用户体验。

import com.kur.kurban.utils.ResResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

// 使用@Slf4j注解自动生成日志记录器
@Slf4j
// @ControllerAdvice注解用于定义全局异常处理类
@ControllerAdvice
public class GlobalExceptionHandling {

    // 处理MethodArgumentNotValidException异常
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    // @ResponseBody注解表示返回结果直接写入HTTP响应体
    @ResponseBody
    public ResResult parameterAbnormality(MethodArgumentNotValidException error) {
        // 返回一个失败的结果,并附带异常消息
        return ResResult.fail(error.getMessage());
    }

    // 处理RuntimeException异常
    @ExceptionHandler(value = RuntimeException.class)
    // @ResponseBody注解表示返回结果直接写入HTTP响应体
    @ResponseBody
    public ResResult runTime(RuntimeException error) {
        // 记录错误日志
        log.error(error.getMessage());
        // 返回一个失败的结果,并附带异常消息
        return ResResult.fail(error.getMessage());
    }
}

你可能感兴趣的:(spring,boot,spring)