SpringMVC全局异常处理

当使用ssm框架构建系统时,可以构建一个全局异常处理器,它是SpingMVC定义的一个异常处理器,一个系统中只能配置一个。

使用方法:
自定义一个异常处理类,需要实现一个接口HandlerExceptionResolver,并实现里面的resolveException方法,最后,需要在spingMVC配置文件中对这个异常处理类进行配置,将这个类加载到spring容器中。

在编码过程中,如果dao层出现了异常,可以直接抛向service,再从service层抛往controller层,在controller层出现异常之后,程序会自动进入到异常处理类里面的resolveException方法,在这个方法中,可以进行相关的处理,如:将错误信息使用log4j输出到日志文件,跳转到一个有好的异常页面等。

自定义异常类:

/**
 * 全局异常处理器
 * 
 * @author Administrator
 */
public class GlobalExceptionReslove implements HandlerExceptionResolver {

	//获取log4j的对象
	private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionReslove.class);
	
	@Override
	public ModelAndView resolveException(HttpServletRequest request,
			HttpServletResponse response, Object object, Exception ex) {
		
		//控制台输出错误信息
		ex.printStackTrace();
		
		//写入日志文件
		logger.error("系统发生异常", ex);
		
		//这里可以将异常信息发送邮件或者发送短信给相关处理人
		
		//展示友好的错误页面
		ModelAndView mv = new ModelAndView();
		mv.addObject("message", "系统发生异常,请稍后重试...");
		mv.setViewName("error/exception");
		
		return mv;
	}
}

SpringMVC配置文件的配置:

<!-- 配置全局异常处理器 -->
<bean class="cn.dss.exception.GlobalExceptionReslove"/>

这里使用了log4j来对日志进行处理,它的使用方法时:
1.需要在src/main/resources下面创建一个log4j.properties文件,一定要是在这个目录下,使用这个文件名,这样log4j能自动加载这个配置文件
2.log4j.properties的内容

log4j.rootLogger=INFO,A3,STDOUT

log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
log4j.appender.STDOUT.layout.ConversionPattern=[%p] [%l] %10.10c - %m%n

log4j.appender.A3=org.apache.log4j.RollingFileAppender
log4j.appender.A3.file=logs/server.log
log4j.appender.A3.MaxFileSize=1024KB
log4j.appender.A3.MaxBackupIndex=10
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=\n\n[%-5p] %d{yyyy-MM-dd HH\:mm\:ss,SSS} method\:%l%n%m%n

3.加入相关的依赖

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>slf4j-log4j12</artifactId>
	<version>1.6.4</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值