与spring整合的全局异常处理器
之前在ssm项目中对异常处理很是烦脑,没有统一的异常处理机制,在web层大量的使用try~catch,有的处理不了就直接抛给了用户,这样的异常处理显然健壮性很差,后来发现原来spring自带的有异常处理器。用过之后履试不爽。
以下是处理全局异常的类
自己定义一个类只需实现 HandlerExceptionResolver接口即可
/**
* 全局异常处理器
*
*
* @author qiu
* @version 1.0
*/
public class GlobalExceptionResolver implements HandlerExceptionResolver {
private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionResolver.class);
/**
*
* 以下是三种处理异常的方法
*/
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
//将异常打印到控制台上
ex.printStackTrace();
//写日志
logger.info("系统发生异常了。。。。。。。");
//显示的错误页面
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error/500");
return modelAndView;
}
}
同时还得在springmvc中简单的配置一下
<!-- 全局异常处理器 -->
<!-- 只需将对应类的路径加到springmvc.xml即可 -->
<bean class="com.qidian.test.exception.GlobalExceptionResolver"/>
放在src下的配置文件log4j.properties
log4j.rootLogger=INFO,A3,STDOUT //三个级别的错误 DEBUG,INFO,ERROR
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=E:/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