Skip to content

六、异常处理

一、异常处理的思路

思路

系统中异常包括两类:预期异常运行时导常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。

系统的<Dao、Service、Controller出现都通过throwsException向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理。

二、异常处理两种方式

  • 使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver
  • 实现Spring的异常处理接口HandlerExceptionResolver自定义自己的异常处理器

三、配置异常

xml
 <!--配置简单映射异常处理器-->
 <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     <property name="defaultErrorView" value="error1"/>
     <property name="exceptionMappings">
         <map>
             <entry key="java.lang.ClassCastException" value="error2"></entry>
             <!--自定义异常-->
             <entry key="com.hdq.exception.MyException" value="error3"></entry>
         </map>
     </property>
 </bean>

四、自定义异常处理器

  1. 创建异常处理器类实现HandlerExceptionResolver
  2. 配置异常处理器
  3. 编写异常页面
  4. 测试异常跳转
java
public class TestExceptionResolver implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
        ModelAndView modelAndView = new ModelAndView();

        if (ex instanceof MyException) {
            modelAndView.addObject("info", "自定义异常");
        } else if (ex instanceof ClassCastException) {
            modelAndView.addObject("info", "类转换异常");
        }
        modelAndView.setViewName("error");
        return modelAndView;
    }
}