SpringMVC异常处理

SpringMVC异常处理

1.1、异常处理的思路
系统中异常有两类:预期异常和运行时异常,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发,测试等手段减少运行时异常的发生
SpringMVC异常处理
1.2、异常处理的两种方式

  • 使用SpringMVC提供的简单异常处理器SpringMappingExeceptionResolver
  • 实现Spring的异常处理接口HandleExceptionResolver

1.3、简单异常处理器SpringMappingExeceptionResolver
SpringMVC异常处理

<!--配置异常处理器-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="error"/>
        <property name="exceptionMappings">
            <map>
                <entry key="java.lang.ClassCastException" value="erro1"/>
                <entry key="" value="erro2"/>
            </map>
        </property>
    </bean>

</beans>

error时对应的error.jsp文件
再第二个entry的key下我没写东西,是因为这个异常时自定义异常,需要自定义异常文件的源地址(我没创建)
1.4、自定义异常处理步骤

  1. 创建异常处理器实现HandleExceptionResolver
  2. 配置异常处理器
  3. 编写异常页面
  4. 测试异常跳转

再mvc包创建文件Exception.MyException

package com.atguigu.mvc.Exception;

public class Myexception extends Exception{
}

在mvc包里在创建resolver.MyExceptionResolver文件

package com.atguigu.mvc.resolver;

import com.atguigu.mvc.Exception.Myexception;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyExceptionResolver implements HandlerExceptionResolver {
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
       /*
       参数Exception:异常对象
       返回值ModelAndView:跳转到错误视图信息
        */
        ModelAndView modelAndView=new ModelAndView();
        if(ex instanceof Myexception){
            modelAndView.addObject("info","自定义异常");
        }else if(ex instanceof ClassCastException){
            modelAndView.addObject("info","类型转换异常");
        }
        modelAndView.setViewName("errro");
        return modelAndView;
    }
}

配置文件

<!--自定义异常处理器-->
    <bean class="com.atguigu.mvc.resolver.MyExceptionResolver"/>
上一篇:【BZOJ3524/2223】[Poi2014]Couriers 主席树


下一篇:python使用py2neo根据关系自动创建neo4j的节点与关系