@RestControllerAdvice与@Controlle

2024-03-25  本文已影响0人  KenChen_939
场景:java全局异常处理

@RestControllerAdvice与@ControllerAdvice的关系就像@Controller和@RestController的关系类似。简单来说,@RestControllerAdvice包含了@ControllerAdvice和@ResResponseBody

全局异常捕获handler示例

/**
 * @Author: KenChen
 * @Description: 全局异常捕获
 * @Date: Create in  2024/2/20 16:50
 */
@RestControllerAdvice
public class GlobalExceptionHandler  {

    @ExceptionHandler(Exception.class)
    @ResponseBody            //如果使用的是@ControllerAdvice注解则需要添加此注解,用于在捕获到异常时返回给前端json数据
    public CommonResult handleException(Exception ex) {
        return CommonResult.error("通用错误返回").putDate(ex.getMessage());
    }

//此方法为@Validated的校验捕获
    @ExceptionHandler(MethodArgumentNotValidException.class)
    protected CommonResult<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex) {
        // 获取验证错误信息
        BindingResult bindingResult = ex.getBindingResult();
        List<FieldError> fieldErrors = bindingResult.getFieldErrors();
        List<String> collect = fieldErrors.stream()
                .map(o -> o.getDefaultMessage())
                .collect(Collectors.toList());
        return CommonResult.error("校验失败").putDate(collect);
    }

}

上一篇 下一篇

猜你喜欢

热点阅读