zoukankan      html  css  js  c++  java
  • 项目中Controller的全局异常处理类

    /**
     * 全局异常处理
     * 
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        @ResponseBody
        @ExceptionHandler(value = ApiException.class)
        public CommonResult handle(ApiException e) {
            if (e.getErrorCode() != null) {
                return CommonResult.failed(e.getErrorCode());
            }
            return CommonResult.failed(e.getMessage());
        }
    
        @ResponseBody
        @ExceptionHandler(value = MethodArgumentNotValidException.class)
        public CommonResult handleValidException(MethodArgumentNotValidException e) {
            BindingResult bindingResult = e.getBindingResult();
            String message = null;
            if (bindingResult.hasErrors()) {
                FieldError fieldError = bindingResult.getFieldError();
                if (fieldError != null) {
                    message = fieldError.getField()+fieldError.getDefaultMessage();
                }
            }
            return CommonResult.validateFailed(message);
        }
    
        @ResponseBody
        @ExceptionHandler(value = BindException.class)
        public CommonResult handleValidException(BindException e) {
            BindingResult bindingResult = e.getBindingResult();
            String message = null;
            if (bindingResult.hasErrors()) {
                FieldError fieldError = bindingResult.getFieldError();
                if (fieldError != null) {
                    message = fieldError.getField()+fieldError.getDefaultMessage();
                }
            }
            return CommonResult.validateFailed(message);
        }
    }
    /**
     * 自定义API异常
     * 
     */
    public class ApiException extends RuntimeException {
        private IErrorCode errorCode;
    
        public ApiException(IErrorCode errorCode) {
            super(errorCode.getMessage());
            this.errorCode = errorCode;
        }
    
        public ApiException(String message) {
            super(message);
        }
    
        public ApiException(Throwable cause) {
            super(cause);
        }
    
        public ApiException(String message, Throwable cause) {
            super(message, cause);
        }
    
        public IErrorCode getErrorCode() {
            return errorCode;
        }
    }
    /**
     * 断言处理类,用于抛出各种API异常
     * 
     */
    public class Asserts {
        public static void fail(String message) {
            throw new ApiException(message);
        }
    
        public static void fail(IErrorCode errorCode) {
            throw new ApiException(errorCode);
        }
    }

    使用断言处理类来抛出各种异常

  • 相关阅读:
    Speex for Android
    反射(高大上)、类的内置方法
    hashlib摘要算法模块,logging日志,configparser配置文件模块
    抽象类,接口类,封装,property,classmetod,statimethod
    面对对象三大特征:继承 多态(鸭子类型)(面试题)
    面向对象命名空间及组合(面试题)
    初始面向对象
    模块与包
    常用模块
    列表表达式,生成器表达式,
  • 原文地址:https://www.cnblogs.com/wk-missQ1/p/14630739.html
Copyright © 2011-2022 走看看