处理思路
dao抛出异常, 抛给了service
service不处理, 继续往外抛
service就抛给表现层了
全局异常处理器, 在表现层统一捕获
package cn.e3mall.search.exception;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* 全局异常处理器
* @author 11501
*
*/
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.debug("-----测试输出日志-----");
logger.info("-----系统发生异常-----");
logger.error("系统发生异常", ex);
//发送邮件, 发短信
//发邮件使用jmail工具包, 发短信使用第三方的webservice
//显示错误页面
ModelAndView modelAndView = new ModelAndView();
//返回逻辑视图给视图解析器
modelAndView.setViewName("error/exception");
return modelAndView;
}
}
log4j.rootLogger=DEBUG,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
异常测试