• springBoot基于Bean和Method参数校验,捕捉异常


    package com.wlb.jp.config;
    
    import com.wlb.jp.utils.ReturnType;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.util.CollectionUtils;
    import org.springframework.validation.BindException;
    import org.springframework.validation.ObjectError;
    import org.springframework.web.bind.annotation.ControllerAdvice;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import javax.validation.ConstraintViolation;
    import javax.validation.ConstraintViolationException;
    import java.util.List;
    import java.util.Set;
    
    
    /**
     * 全局异常处理器
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
    
        /**
         * 用来处理method validation异常
         * @param ex
         * @return
         */
        @ExceptionHandler(ConstraintViolationException.class)
        @ResponseBody
        public ReturnType resolveConstraintViolationException(ConstraintViolationException ex){
            String code = "";
            String msg = "";
            Object value = "";
            ReturnType returnType = new ReturnType(code, msg, value);
    
            Set<ConstraintViolation<?>> constraintViolations = ex.getConstraintViolations();
            if(!CollectionUtils.isEmpty(constraintViolations)) {
                StringBuilder msgBuilder = new StringBuilder();
                for(ConstraintViolation constraintViolation :constraintViolations){
                    msgBuilder.append(constraintViolation.getMessage()).append(",");
                }
                String errorMessage = msgBuilder.toString();
                if (errorMessage.length() > 1) {
                    errorMessage = errorMessage.substring(0, errorMessage.length() - 1);
                }
                returnType.setMsg(errorMessage);
                return returnType;
            }
            returnType.setMsg(ex.getMessage());
            return returnType;
        }
    
    
        /**
         * 用来处理bean validation异常
         * @param ex
         * @return
         */
    //    @ExceptionHandler(MethodArgumentNotValidException.class)
        @ExceptionHandler(BindException.class)
        @ResponseBody
        public ReturnType resolveMethodArgumentNotValidException(BindException ex){
            String code = "";
            String msg = "";
            Object value = "";
            ReturnType returnType = new ReturnType(code, msg, value);
    
            List<ObjectError> objectErrors = ex.getBindingResult().getAllErrors();
            if(!CollectionUtils.isEmpty(objectErrors)) {
                StringBuilder msgBuilder = new StringBuilder();
                for (ObjectError objectError : objectErrors) {
                    msgBuilder.append(objectError.getDefaultMessage()).append(",");
                }
                String errorMessage = msgBuilder.toString();
                if (errorMessage.length() > 1) {
                    errorMessage = errorMessage.substring(0, errorMessage.length() - 1);
                }
                returnType.setMsg(errorMessage);
                return returnType;
            }
            returnType.setMsg(ex.getMessage());
            return returnType;
        }
    }
  • 相关阅读:
    【JVM基础】JVM垃圾回收机制算法
    【java基础】- java双亲委派机制
    Java基础(一)
    JVM
    冷知识: 不会出现OutOfMemoryError的内存区域
    疯狂Java:突破程序员基本功的16课-李刚编著 学习笔记(未完待续)
    nor flash之写保护
    spinor/spinand flash之高频通信延迟采样
    nor flash之频率限制
    使用littlefs-fuse在PC端调试littlefs文件系统
  • 原文地址:https://www.cnblogs.com/zhuo-zui/p/13171335.html
Copyright © 2020-2023  润新知