SpringMVC异常的处理机制

处理流程图

其本质还是把异常交给SpringMVC框架来处理

系统的dao、service、controller出现异常都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理。springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。

1.异常处理的两种方式

1.使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver

2.实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器

1.使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver

处理逻辑:使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver,处理器实现HandlerExceptionResolver 接口,全局异常处理器需要实现该接口

SimpleMappingExceptionResolver:就是通过简单的映射关系来决定由哪个视图,来处理当前的错误信息。

SimpleMappingExceptionResolver:提供通过异常类型exceptionMappings,来进行异常与视图之间的映射关系,提供在发生异常时,通过statusCodes来映射异常返回的视图名称和对应的HttpServletResponse的返回码。而且可以通过defaultErrorView和defaultErrorCode来指定默认值,defaultErrorView表示当没有在exceptionMappings里面找到对应的异常类型时,就返回defaultErrorView定义的视图,defaultErrorCode表示在发生异常时,当没有在视图与返回码的映射关系statusCodes里面找到对应的映射时,默认返回的返回码。

在使用SimpleMappingExceptionResolver时,当发生异常的时候,SimpleMappingExceptionResolver将会把当前的异常对象放到自身属性exceptionAttribute中,当没有指定exceptionAttribute时,exceptionAttribute就是用默认值exception

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!--默认错误视图-->
<!--即找不到默认的错误类型的时候就默认使用这个--> <property name="defaultErrorView" value="defaulterror"/>
<!--具体类型报错的错误视图-->
<property name="exceptionMappings">
<map>
<entry key="java.lang.ClassCastException" value="ClassCastException"/>
</map>
</property>
</bean>

2.实现Spring的异常处理接口HandlerExceptionResolver 自定义自己的异常处理器

2.1实现HandlerExceptionResolver

package com.pjh.Myexception;

import com.sun.org.apache.bcel.internal.generic.MONITORENTER;
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 httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView modelAndView = new ModelAndView();
if (e instanceof MyEcxeption){
//对于自定义异常的操作
}else{
//对于非自定义异常的操作
} return modelAndView;
}
}

2.2在配置文件中配置

 <bean class="com.pjh.Myexception.MyexceptionResolver"/>

以上就是SpringMVC系列的第四章,主要侧重SpringMVC异常处理的相关解析,我后续会持续更新我的学习内容,本博客主要侧重于数据结构于算法和java开发,觉得我的文章有帮助的小伙伴可以关注我,有疑问可评论私信,相逢即是缘,大家高处见

最新文章

  1. jquery实现Tab选项卡菜单
  2. 数据库日常维护-CheckList_02有关数据库备份检查
  3. Android -- 创建数据库到SD卡
  4. JavaScript:引用js文件时的编码格式问题
  5. android注解[Jake Wharton Butter Knife]
  6. 最短路径算法Dijkstra和A*
  7. C# using Sendkey function to send a key to another application
  8. placeholder在不同浏览器下的表现及兼容方法 placeholder兼容
  9. Html.Partial和Html. RenderPartial用法
  10. SSH整合中为获取表单对象Action类实现的接口及拦截器配置
  11. cuda编程学习6——点积dot
  12. 多种在线地图综合对比,Google,必应,arcgis Online...
  13. dotnet core使用开源组件FastHttpApi进行web应用开发
  14. mysql 相关命令
  15. Arcmap内容列表刷新
  16. PTA寒假三
  17. ROS学习手记 9 -- 阶段性复习
  18. CentOS中安装JAVA环境
  19. CentOS下使用crontab+mysqldump实现定时自动备份数据库
  20. GG中obey命令的使用

热门文章

  1. Spring注解不生效原因总结
  2. [记录点滴]授人以渔,从Tensorflow找不到dll扩展到如何排查问题
  3. thinkPHP5.1 MVC架构使用方法
  4. python获取某视频网站视频
  5. ERP与EHR系统的恩怨纠葛--开源软件诞生13
  6. redis 的基本使用
  7. JavaScript,你好!
  8. java安全编码指南之:死锁dead lock
  9. Spring循环依赖的问题
  10. Mindmaster破解版与正版