• springMVC中的异常处理


    系统中异常包括两类:预期异常和运行时异常 RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
    系统的 dao、service、controller 出现异常都通过 throws Exception 向上抛出,最后由 springmvc 前端控制器交由异常处理器进行异常处理
      

     实现步骤:

      1.编写异常类

    /**
     * 自定义异常类型
     */
    public class CustomException extends RuntimeException {
        private ResultCode resultCode; // 自定义的错误代码
    
        public CustomException(ResultCode resultCode) {
            this.resultCode = resultCode;
        }
    
        public ResultCode getResultCode() {
            return resultCode;
        }
    }

      2.定义异常抛出类,方便调用,不用每次都手动new一个异常

    /**
     * 异常抛出类
     */
    public class ExceptionCast {
        public static void cast(ResultCode resultCode) {
            throw new CustomException(resultCode);
        }
    }

      3.自定义统一异常捕获类,可以扩展捕获更多异常

    /**
     * 统一异常捕获类
     */
    @ControllerAdvice // 控制器增强
    public class ExceptionCatch  {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(ExceptionCatch.class);
    
        // 捕获CustomException此类异常
        @ExceptionHandler(CustomException.class)
        @ResponseBody // 响应json数据给客户端
        public ResponseResult customException(CustomException ce) {
            // 记录日志
            LOGGER.error("catch exception: {}", ce.getMessage());
            ResultCode resultCode = ce.getResultCode();
            // ResponseResult 自定义的返回错误信息类
            return new ResponseResult(resultCode);
        }
    
        // 捕获Exception此类异常
        @ExceptionHandler(Exception.class)
        @ResponseBody
        public ResponseResult exception(Exception e) {
            // 记录日志
            LOGGER.error("catch exception: {}", e.getMessage());
            // CommonCode:自定义的通用错误代码和自定义错误代码ResultCode具有相同的作用
            return new ResponseResult(CommonCode.SERVER_ERROR);
        }
    }

      4.抛出自定义异常

         

  • 相关阅读:
    AD域新建用户
    Windows程序设计(1)
    C++ 进阶 模板和STL
    C++ 基于多态的职工管理系统
    C++核心编程
    C++入门-控制台版的通讯录管理系统
    第一章、熟悉工作环境和相关工具
    Spring整合JDBC temple
    SpringMVC整合mybaitis
    实验12 添加0号中断处理程序
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12312488.html
Copyright © 2020-2023  润新知