SpringMVC教程--异常处理器详解
异常处理器
springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。
1.1 异常处理思路
系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。
系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:
1.2 自定义异常类
为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。
public class CustomException extends Exception {/** serialVersionUID*/private static final long serialVersionUID = -5212079010855161498L;public CustomException(String message){super(message);this.message = message;}//异常信息private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}
1.3 自定义异常处理器
public class CustomExceptionResolver implements HandlerExceptionResolver {@Overridepublic ModelAndView resolveException(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) {ex.printStackTrace();CustomException customException = null;//如果抛出的是系统自定义异常则直接转换if(ex instanceof CustomException){customException = (CustomException)ex;}else{//如果抛出的不是系统自定义异常则重新构造一个未知错误异常。customException = new CustomException("未知错误,请与系统管理 员联系!");}ModelAndView modelAndView = new ModelAndView();modelAndView.addObject("message", customException.getMessage());modelAndView.setViewName("error");return modelAndView;}}
1.4 错误页面
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>错误页面</title></head><body>您的操作出现错误如下:<br/>${message }</body></html>
1.5 异常处理器配置
在springmvc.xml中添加:
<!-- 异常处理器 --><bean id="handlerExceptionResolver" class="com.sihai.ssm.controller.exceptionResolver.CustomExceptionResolver"/>
1.6 异常测试
修改商品信息,id输入错误提示商品信息不存在。
修改controller方法“editItem”,调用service查询商品信息,如果商品信息为空则抛出异常:
// 调用service查询商品信息Items item = itemService.findItemById(id);if(item == null){throw new CustomException("商品信息不存在!");}
请自行实现在service、dao中跑出异常。
SpringMVC教程--异常处理器详解相关推荐
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...
- springMVC教程--拦截器详解
3 拦截器 3.1 定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 3.2 拦截器定义 实现HandlerInte ...
- SpringMVC教程--json使用详解
json数据交互 1.1 @RequestBody 作用: @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将 ...
- springmvc教程--RESTful支持详解
RESTful支持 1.1 需求 RESTful方式商品修改.商品查询. 1.2 添加DispatcherServlet的rest配置 <servlet><servlet-name& ...
- crashdumpandroid_Android 中Crash时如何获取异常信息详解及实例
Android 中Crash时如何获取异常信息详解 前言: 大家都知道,Android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于Android ...
- SpringMVC 之类型转换Converter详解转载
SpringMVC之类型转换Converter详解 本文转载 http://www.tuicool.com/articles/uUjaum 1.1 目录 1.1 目录 1.2 ...
- 【Linux】Ubuntu 20.04安装教程(图文详解)
Ubuntu 20.04安装教程(图文详解) 准备工作 打开 VWMARE 进行安装配置 虚拟机已经配置完毕后的 Ubuntu20.0.4 安装 安装VMware Tools 准备工作 下载 Ubun ...
- java异常体系结构详解
java异常体系结构详解 参考文章: (1)java异常体系结构详解 (2)https://www.cnblogs.com/hainange/p/6334042.html 备忘一下.
- python语言入门详解-python初级教程:入门详解
python初级教程:入门详解 Crifan Li 目录 前言 .................................................................... ...
最新文章
- 自动延时跳转到指定页面JS脚本代码
- 单片机modebus RTU通信实现,采用C语言,可适用于单片机,VC,安卓等(转)
- java如何读取word的占位符_java利用xml导出word(占位符替换)
- Facebook将在印度测试联网无人机,可连续飞行90天
- linux五周第三次课(3月7日)笔记
- 1小时学会jenkins集成邮件/微信/钉钉通知
- vsftpd配置系统用户为登陆用户
- 2019年全国大学生电子设计竞赛G题解决方案-双路语音同传的无线收发系统
- 【京东】scrapy爬虫抓取京东图书详情、评论
- Zigbee协议网络相关的东西(1)
- #2014蓝桥杯-4.史丰收速算--------根本看不懂
- ospf配置小实验及安全认证
- 从五个方面来讲一下平面设计颜色搭配知识——黎乙丙
- e4a php上传,POST上传文件(E4A)
- Zerg 族历史简介
- vue中click无效问题
- 「GitLab篇」如何用Git平台账号登录建木CI
- 【Python】批量替换word文档内容python-docx的实现
- 交叉编译工具链建立与常识
- [置顶]Blender 三维绘图及渲染软件 (开源优秀强大跨平台)
热门文章
- Github代码上传和下载
- 自然语言处理库——TextBlob
- 在MyEclipse中导入做好的java项目出现错误The project cannot be built until build path errors are resolved
- C++ Primer 5th笔记(chap 17 标准库特殊设施)bitset类型
- Hyperledger Fabric 智能合约实战 (3) 安装fabric
- nginx.conf配置文件
- 2-Authentication Framework Chain of Trust
- 后台服务显示右下角弹窗 -- system权限创建用户权限进程
- 实现远程调用_微服务的那些事(三),微服务的远程调用方式。RPC和HTTP
- Intel VT学习笔记(七)—— EPT物理地址转换