Spring异常处理器的几种配置

SpringMvc的异常处理:默认返回错误的信息页面
     我们使用SpringMvc的异常处理功能 当发生异常时 给我们返回我们指定的页面
    1.全局异常处理
      1.1 全局异常处理基于配置文件的形式
          SpringMVC提供了一个有关在目标执行过程中出现异常的处理接口:HandlerExceptionResolver
          SpringMVC提供了一些本身自带的异常处理器 帮助我们处理异常 SExceptionResolver

          1.加载到容器中 使用bean标签
          2.配置出现异常时去往的对应的页面
          3.如何在页面拿到异常信息
              <!--    将异常处理器加载到容器中
             一般情况下 不同的异常 去往不同的页面-->
     <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
         <property name="exceptionMappings">
             <props>
                 <!--                键值对:
                                       键 key:目标方法在执行过程中出现的异常
                                       值value:出现指定的异常时 去到的页面-->
                 <prop key="java.lang.ArithmeticException">ArithmeticExceptionE</prop>
                 <prop key="java.lang.NullPointerException">NullPointerExceptionE</prop>
             </props>
         </property>
         <!--    exceptionAttribute属性设置一个属性名 将异常信息保存在这个属性名中    -->
         <property name="exceptionAttribute" value="ex"/>
     </bean>
=======================================================================================
当出现异常时,如果我们配置的异常解析器处理不了 默认交给SpringMVc
      1.2 全局异常处理基于注解
          @ExceptionHandler(value = {ArithmeticException.class, NullPointerException.class,Exception.class})//表面当前方法处理哪个异常
     public String handlerArithmeticException(Exception ex, Model model) {
         System.out.println("=============================出现异常了==========================");
         model.addAttribute("ex", ex.getMessage());
         return "Exception";
     }
      1.3  全局自定义异常解析器(处理器)
        1.实现 HandlerExceptionResolver接口
        2.重写resolverException方法
        3.加载到ioc容器中 【注解 配置文件】
===============================代码====================================================
            public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
         if (e instanceof ArrayIndexOutOfBoundsException) {
             ModelAndView modelAndView = new ModelAndView("ArrayIndexOutOfBoundsException");
             modelAndView.addObject("ex", e);
             return modelAndView;
         } else if (e instanceof NullPointerException) {
             ModelAndView modelAndView = new ModelAndView("NullPointerException");
             modelAndView.addObject("ex", e);
             return modelAndView;         
}
         ModelAndView modelAndView = new ModelAndView("Exception");
         modelAndView.addObject("ex", e);
         return modelAndView;
     }
<bean class="BUKA.myException.ExceptionResolver"/>



    2.局部异常处理
     在Controller专门定义一个方法处理异常 仅仅针对当前Controller出现的异常
    //异常处理器 指定处理那种异常
     //处理异常的方法
     @ExceptionHandler(Exception.class)
     public String exception(Model model) {
         model.addAttribute("ex", "lisi");
         return "Exception";
     }
  当全局和局部异常处理器都可以处理这个异常时 根据就近原则 局部异常处理器会优先于全局异常处理器
  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值