文档章节

SpringMVC 异常统一处理接口 HandlerExceptionResolver

刘引惟
 刘引惟
发布于 2017/06/01 17:53
字数 201
阅读 19
收藏 3

1.源码接口 

/**
 * 源码接口定义
 */
public interface HandlerExceptionResolver {
 
	ModelAndView resolveException(
			HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);

}

 

2.源码接口实现

@Component
public class ExceptionHandler implements HandlerExceptionResolver {

	@Override
	public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {

		// 判断是否AJAX请求
		if (request.getHeader("x-requested-with") != null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
			try {
				response.setContentType("application/json;charset=UTF-8");
				PrintWriter writer = response.getWriter();
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("success", false);
				if (ex instanceof MessageException) {// 安全起见,业务异常前端可见,否则统一归为系统异常
					map.put("errorMsg", ex.getMessage());
				} else {
					map.put("errorMsg", "系统异常!");
				}
				Gson gson = new Gson();
				writer.write(gson.toJson(map));
				writer.flush();
				writer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		Map<String, Object> model = new HashMap<>();
		return new ModelAndView("/error", model); 
	} 
}

ExceptionHandler 实现 HandlerExceptionResolver接口,需要添加 @Component 注解,或者增加配置文件 <bean class="com.xxg.ExceptionHandler " /> 。 

配置完成,后台Controller中所有的业务异常都会由ExceptionHandler来处理。

© 著作权归作者所有

共有 人打赏支持
刘引惟
粉丝 7
博文 78
码字总数 17743
作品 0
浦东
Spring MVC 系统异常处理方式及性能对比

大部分公司所用的Spring框架版本是3.1版本以下,所以今天暂时总结3.1版本的Spring-MVC异常处理方式。 一、Spring MVC处理异常有3种方式: (1)使用Spring-MVC提供的SimpleMappingExceptionR...

Candy_Desire
2014/10/17
0
5
springmvc - ExceptionResolver

Deprecated!! 见 新的统一异常处理 springmvc 异常处理机制: 异常处理器ExceptionResolver 自定义异常类:继承Excepion 创建异常处理类: 创建一个CustomExceptionResolver实现HandlerEx...

lemos
2016/11/20
0
0
SpringMVC中的统一异常处理-自定义异常

https://www.cnblogs.com/shanheyongmu/p/5872442.html 我们知道,系统中异常包括:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、...

wangwei2134
08/20
0
0
使用Spring MVC统一异常处理实战

使用Spring MVC统一异常处理实战 1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需...

庸夫俗子
2015/03/05
0
0
Springmvc自定义统一异常处理

1.默认异常处理(不友好) 2.自定义统一异常处理流程 1)demo-base中pom.xml修改 <dependency> </dependency> 2)自定义异常处理类-DemoExceptionResolver 在demo-base中定义DemoExceptionRe......

warlockssss
2016/09/18
31
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
5
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
4
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部