出自於:https://blog.csdn.net/he90227/article/details/46309297 ---- 利用Spring進行統一異常處理的兩種方式。html
原文:https://blog.csdn.net/he90227/article/details/46309297?utm_source=copy java
package com.jay.platform.exception.handler; import java.io.IOException; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import com.jay.platform.exception.AjaxException; import com.jay.platform.exception.BusinessException; /** * * @ClassName: ExceptionHandler * @Description: 統一異常處理 , 注意這裏能夠處理Controller層拋出的異常,但不處理Controller捕獲的異常(Controller捕獲的異常,這裏再也不處理) * @author Jay He * @date 2014年11月4日 上午10:22:11 * */ public class ExceptionHandler implements HandlerExceptionResolver { private static final Logger LOGGER = Logger .getLogger(ExceptionHandler.class); @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { LOGGER.error(new Date().toLocaleString() + "異常信息", ex); if (ex instanceof NumberFormatException) { return new ModelAndView("exception/number"); } else if (ex instanceof NullPointerException) { return new ModelAndView("exception/null"); } else if (ex instanceof BusinessException) { return new ModelAndView("exception/business"); } else if (ex instanceof SocketTimeoutException || ex instanceof ConnectException) { try { response.getWriter().write("網絡異常"); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView("exception/net_error"); }else if(ex instanceof AjaxException){ System.out.println("-=-="); } return new ModelAndView("exception/exception"); } }
package com.jay.platform.exception.handler; import java.io.IOException; import java.net.ConnectException; import java.net.SocketTimeoutException; import java.util.Date; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; import com.jay.platform.exception.AjaxException; import com.jay.platform.exception.BusinessException; /** * * @ClassName: ExceptionHandler * @Description: 統一異常處理 , 注意這裏能夠處理Controller層拋出的異常,但不處理Controller捕獲的異常(Controller捕獲的異常,這裏再也不處理) * @author Jay He * @date 2014年11月4日 上午10:22:11 * */ public class ExceptionHandler extends AbstractHandlerExceptionResolver{ private static final Logger LOGGER = Logger .getLogger(ExceptionHandler.class); @Override protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { <pre name="code" class="java">LOGGER.error(new Date().toLocaleString() + "異常信息", ex); if (ex instanceof NumberFormatException) { return new ModelAndView("exception/number"); } else if (ex instanceof NullPointerException) { return new ModelAndView("exception/null"); } else if (ex instanceof BusinessException) { return new ModelAndView("exception/business"); } else if (ex instanceof SocketTimeoutException || ex instanceof ConnectException) { try { response.getWriter().write("網絡異常"); } catch (IOException e) { e.printStackTrace(); } return new ModelAndView("exception/net_error"); }else if(ex instanceof AjaxException){ System.out.println("-=-="); } return new ModelAndView("exception/exception");
在配置文件中添加自定義異常處理模塊web
<!-- Spring MVC的統一異常處理 --> <bean id="exceptionResolver" class="com.jay.platform.exception.handler.ExceptionHandler"/>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Error頁面</title> </head> <body> <center> <h1>Error頁面</h1><br> <h2>出錯信息</h2> <br><br> 錯誤描述 <br> ${errorTips } <br><br> <br><br> 錯誤異常信息棧 <br><br> ${ex } </center> </body> </html>