0


SpringBoot异常处理和单元测试

SpringBoot异常处理

自定义错误页面

SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息

如 果我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自 定 义 的 错 误 页 面 , 需 要 再src/main/resources/

templates 目录下创建 error.html 页面。注意:名称必须叫 error

controller

/**
 * SpringBoot处理异常方式一:自定义错误页面
 */@ControllerpublicclassDemoController{@RequestMapping("/show")publicStringshowInfo(){String str =null;
        str.length();return"index";}@RequestMapping("/show2")publicStringshowInfo2(){int a =10/0;return"index";}}

错误页面

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>错误提示页面</title></head><body>
    出错了,请与管理员联系。。。
    <spanth:text="${error}"></span></body></html>

整合web访问全局异常处理器

创建全局异常处理器

/**
 * 通过实现HandlerExceptionResolver接口做全局异常处理
 */@ComponentpublicclassGlobalExceptionimplementsHandlerExceptionResolver{@OverridepublicModelAndViewresolveException(HttpServletRequest request,HttpServletResponse response,Object handler,Exception ex){ModelAndView mv =newModelAndView();//判断不同异常类型,做不同视图跳转if(ex instanceofArithmeticException){
            mv.setViewName("error1");}if(ex instanceofNullPointerException){
            mv.setViewName("error2");}
        mv.addObject("error", ex.toString());return mv;}}

错误页面

error1.html

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>错误提示页面-ArithmeticException</title></head><body>
    出错了,请与管理员联系。。。
    <spanth:text="${error}"></span></body></html>

error2.html

<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>错误提示页面-NullPointerException</title></head><body>
    出错了,请与管理员联系。。。
    <spanth:text="${error}"></span></body></html>

整合ajax全局异常处理

创建全局异常处理器

@ControllerAdvicepublicclassAjaxGlobalException{/**
     * 处理全局异常
     * @param exception   异常
     * @return Map<String, Object>
     */@ResponseBody@ExceptionHandler(value =Exception.class)publicMap<String,Object>errorHandler(Exception exception){Map<String,Object> map =newHashMapMap<>();
        map.put("status",500);
        map.put("msg", exception.getMessage());return map;}}

Spring Boot整合Junit

Junit启动器

<!--junit启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>

编写业务代码

dao

@RepositorypublicclassUserDaoImpl{publicvoidsaveUser(){System.out.println("insert into users.....");}}

service

@ServicepublicclassUserServiceImpl{@AutowiredprivateUserDaoImpl userDaoImpl;publicvoidaddUser(){this.userDaoImpl.saveUser();}}

app

@SpringBootApplicationpublicclassApp{publicstaticvoidmain(String[] args){SpringApplication.run(App.class, args);}}

整合Junit

/**
 *  main方法:
 *        ApplicationContext ac=new 
 *                   ClassPathXmlApplicationContext("classpath:applicationContext.xml");
 *  junit与spring整合:
 *      @RunWith(SpringJUnit4ClassRunner.class):让junit与spring环境进行整合
 *       @Contextconfiguartion("classpath:applicationContext.xml")  
 */@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes={App.class})publicclassUserServiceTest{@AutowiredprivateUserServiceImpl userServiceImpl;@TestpublicvoidtestAddUser(){this.userServiceImpl.addUser();}}

本文转载自: https://blog.csdn.net/w2144217940/article/details/135659595
版权归原作者 wwc_boke 所有, 如有侵权,请联系我们删除。

“SpringBoot异常处理和单元测试”的评论:

还没有评论