zoukankan      html  css  js  c++  java
  • 基础组件-自定义异常和异常拦截

    自定义异常

    /**
     * @author: Gabriel
     * @date: 2020/1/17 14:56
     * @description 自定义异常
     */
    @Data
    public class BusinessException extends RuntimeException {
    
        /** 状态码 */
        protected int code;
    
        /** 错误信息 */
        protected String message;
    
        /** 枚举值 */
        private ResultCode resultCode;
    
    
        public BusinessException(ResultCode resultCode) {
            this.resultCode = resultCode;
            this.code = resultCode.getCode();
            this.message = resultCode.getDesc();
        }
    }

    异常拦截

    /**
     * @author: Gabriel
     * @date: 2020/1/17 14:55
     * @description 全局异常拦截
     */
    @Slf4j
    @RestControllerAdvice
    public class GlobalExceptionControllerAdvice {
    
        /**
         * 统一异常拦截
         * @param request
         * @param exception
         * @return
         */
        @ExceptionHandler(value = Exception.class)
        public Result exceptionHandler(HttpServletRequest request,Exception exception){
            /**
             * 如果是参数校验异常,不进入日志统计
             */
            if (exception instanceof BindException) {
                BindException e = (BindException) exception;
                List<ObjectError> allErrors = e.getAllErrors();
                String defaultMessage = allErrors.get(0).getDefaultMessage();
                return Result.errorCodeMessage(ResultCode.ILLEGAL_ARGUMENT.getCode(),defaultMessage);
            }
            /**
             * 非参数校验异常 记录日志 ,有助于错误排查
             */
            log.error("服务器内部错误: 请求地址--->{},请求ip--->:{},错误详情:{},请求参数:{}",
                    request.getRequestURL(), IpAddressUtil.getIpAddr(request), exception.getMessage(), RequestUtil.getParams(request));
    
            log.error("服务器内部请求异常",exception);
    
            if (exception instanceof BusinessException) {
                BusinessException e = (BusinessException) exception;
                return Result.response(e.getResultCode());
            }
    
            if (StringUtils.isBlank(exception.getMessage())) {
                return Result.errorCodeMessage(ResultCode.EXCEPTION.getCode(),"空指针异常");
            }
    
            return Result.errorCodeMessage(ResultCode.EXCEPTION.getCode(), exception.getMessage());
    
        }
    
    }
  • 相关阅读:
    linux源码解读(五):文件系统——文件和目录的操作
    linux源码解读(二):文件系统——高速缓存区
    linux源码解读(一):进程的创建、调度和销毁
    linux源码解读(四):文件系统——挂载和卸载
    .net工作室第六周、类。人打怪兽
    无法将类型为“System.Web.UI.LiteralControl”的对象强制转换为类型
    sql查询语句
    .net工作室第七周 数据库
    时间函数的使用。
    GridView 删除数据
  • 原文地址:https://www.cnblogs.com/july-sunny/p/12240210.html
Copyright © 2011-2022 走看看