美文网首页
@RestControllerAdvice与@Controlle

@RestControllerAdvice与@Controlle

作者: KenChen_939 | 来源:发表于2024-03-25 15:07 被阅读0次
场景: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);
    }

}

相关文章

网友评论

      本文标题:@RestControllerAdvice与@Controlle

      本文链接:https://www.haomeiwen.com/subject/quodtjtx.html