1. 程式人生 > >全域性異常捕獲處理

全域性異常捕獲處理

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.orm.jpa.JpaOptimisticLockingFailureException;
import org.springframework.
stereotype.Component; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import com.xqx.fdczzxt.exception.ParameterCheckException; /** * spring mvc 全域性異常捕獲處理 * @author Wtao * */ @Component public class GloableExceptionHandler implements
HandlerExceptionResolver { final Logger log = LoggerFactory.getLogger(GloableExceptionHandler.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { //異常日誌記錄級別設定 if(ex instanceof ParameterCheckException
){ //業務引數異常只做warn級別日誌 log.warn(ex.getMessage(),ex); }else{ log.error(ex.getMessage(),ex); } //特殊異常提示 String tip = "出錯了"; //樂觀鎖更新衝突 if(ex instanceof JpaOptimisticLockingFailureException){ tip = "更新操作衝突,請確保在同一時間只有您一人在操作該條記錄。"; } //返回頁面異常頁面("WEB-INF/jsp/error.jsp") ModelAndView mv = new ModelAndView("error"); mv.addObject("exception", ex); mv.addObject("stacktrace",ExceptionUtils.getStackTrace(ex)); mv.addObject("tip", tip); return mv; } }