@RestControllerAdvice与@ControllerAdvice的区别

场景: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);
    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容