zoukankan      html  css  js  c++  java
  • 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_17-异常处理-可预知异常处理-异常处理测试

     ResultCode有很多的实现类


    cmsCode有很多类型的错误异常


    pgeService内当CmsPage这个对象为空的时候,异常类型就可以抛出CmsCode里面的错误代码

    
    
    if(cmsPage1==null){
    //throw new CustomException(CommonCode.FAIL);
    ExceptionCast.cast(CmsCode.CMS_ADDPAGE_EXISTSNAME);
    }
     

    测试

    测试添加,重复添加会报错。、
    在这里加个断点

    走到这里再继续往下走,就应该进入到捕获类了。


    再继续往下走,。但是我们没有捕获类。所以这里就报500错误了。报了一个服务端错误。

    刚才的这些类都是common工程下创建的


    这里加的注解。被spring扫描到了吗

    我们的spring boot的启动类并没有扫描common的包

    所以springBoot的启动类 我们需要加上扫描common的包

    @ComponentScan(basePackages={"com.xuecheng.framework"})//扫描common包下的类


    重新启动spring boot项目。再次测试



    代码放行

    将来的信息想转换成json。所以在捕获类上面我们需要用一个注解。所以加上@ReponseBody


    重新启动,再来测试。走到断点,。代码放行,swagger输出下面错误信息。拿到信息就可以在页面上给用户提示了

    前端代码的修改

    如果返回的json数据里面有message信息。那么就提示这个具体的错误信息


    移交一个已经存在的数据






    以上就是针对可预知的异常处理的流程。

    总结

    common的统一捕获类

    捕获异常,取出错误代码。封装成ReponseResult, @ReponseBody 转成json 输出给前端。

    这里记得 正式的用的时候 要改成 不等于null去判断页面已经存在了


    最终代码

    @ControllerAdvice
    public class ExceptionCatch {
        private static final Logger LOGGER= LoggerFactory.getLogger(ExceptionCatch.class);
        //捕获CustomException此类异常
        @ExceptionHandler(CustomException.class)
        @ResponseBody
        public ResponseResult customException(CustomException customException){
            //获取异常信息,日志记录异常
            LOGGER.error("catch exception:{}",customException.getMessage());
            ResultCode resultCode=customException.getResultCode();
            return new ResponseResult(resultCode);
        }
    }


     

  • 相关阅读:
    RSA算法
    本地CodeForces
    基于Giolite 多人开发
    DES算法
    MD5算法
    仓库库存管理系统(C+MySQL+ODBC)
    Spring源码解析(一)开篇
    JDK动态代理实现源码分析
    J.U.C Atomic(一)CAS原理
    JDK 注解详解
  • 原文地址:https://www.cnblogs.com/wangjunwei/p/11573282.html
Copyright © 2011-2022 走看看