在Spring中,我們寫一些業務邏輯的時候或許要拋出異常,這裏也許你就糾結了,到底是拋出去還是捕獲這個異常進行一些處理呢,這裏我的理解是,如果異常發生對業務有影響(影響返回的數據)那麼就採取捕獲的措施,在catch裏邊寫相關的邏輯,但是如果發生的是一些無關緊要的異常,那麼我的建議是直接拋出,同時新建一個Spring的全局異常Handler來處理拋出的異常以及定製異常響應的頁面!下邊我直接給出代碼!
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;
public class GlobalException implements HandlerExceptionResolver {
private static final Logger logger = LoggerFactory.getLogger(GlobalException.class);
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception e) {
// TODO Auto-generated method stub
e.printStackTrace();
logger.error("系統發生異常",e);
//發郵件的話就用jmail
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error/exception");
return modelAndView;
}
}
配合log4j就能持久化異常了,是不是更方便了!