全域性異常捕獲處理
阿新 • • 發佈:2018-12-08
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;
}
}