SpringMVC之异常处理器的使用

打印 上一主题 下一主题

主题 855|帖子 855|积分 2567


  • SpringMVC的异常处理器是处理控制器方法执行过程出现的异常。
  • SpringMVC提供了一个处理异常的接口HandlerExceptionResolver。
  • HandlerExceptionResolver接口有两个实现类:
    DefaultHandlerExceptionResolver实现类和SimpleMappingExceptionResolver实现类。
    DefaultHandlerExceptionResolver实现类是SpringMVC默认异常处理器。
    SimpleMappingExceptionResolver实现类是简易异常处理器,我们一般自定义配置异常处理策略就是使用该异常处理器。
基于xml文件配置异常处理器

配置异常处理器
  1. <bean >
  2.        
  3.         <property name="order" value="1"/>
  4.        
  5.         <property name="exceptionMappings">
  6.                 <props>
  7.                        
  8.                         <prop key="java.lang.ArithmeticException">error</prop>
  9.                         <prop key="java.lang.NullPointerException">error</prop>
  10.                 </props>
  11.         </property>
  12.        
  13.         <property name="exceptionAttribute" value="ex"/>
  14. </bean>
复制代码
创建视图
  1. <a th:target="_blank" href="https://www.cnblogs.com/@{/test/error}">测试异常处理器</a><br/>
复制代码
  1. <!DOCTYPE html>
  2. <html lang="en" xmlns:th="http://www.thymeleaf.org">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>错误</title>
  6. </head>
  7. <body>
  8. <h1>error.html</h1>
  9. <hr/>
  10. <a th:text="${ex}"></a>
  11. </body>
  12. </html>
复制代码
编写控制器方法
  1.     @GetMapping("/test/error")
  2.     public String testError() {
  3.        //出现异常
  4.         System.out.println(10/0);
  5.         return "success";
  6.     }
复制代码
测试
发送访问/test/error控制器方法的请求,控制器方法执行过程中出现异常处理器中配置的异常策略,跳转到指定异常视图。
基于注解配置异常处理器
  1. @ControllerAdvice //将当前类标识为异常处理的组件
  2. public class ExceptionController {
  3.     //@ExceptionHandler用于设置所标识方法处理的异常
  4.     //ex表示当前请求处理中出现的异常对象
  5.     @ExceptionHandler(value = {ArithmeticException.class})
  6.     public ModelAndView handleArithmeticException(Exception ex) {
  7.         ModelAndView mad = new ModelAndView();
  8.         mad.addObject("ex",ex);
  9.         mad.setViewName("error");
  10.         return mad;
  11.     }
  12.     @ExceptionHandler(value = {NullPointerException.class})
  13.     public String handleNullPointerException(Exception ex,Model model) {
  14.         model.addAttribute("ex",ex);
  15.         return "error";
  16.     }
  17. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

tsx81428

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表