【轉】使用Spring MVC統一異常處理實戰

來源:互聯網
上載者:User

標籤:檔案   blog   基於   設定檔   內容   web   span   new   article   

方法一:使用SimpleMappingExceptionResolver實現異常處理

//在Spring的設定檔applicationContext.xml中增加以下內容:<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">      <!-- 定義預設的異常處理頁面,當該異常類型的註冊時使用 -->      <property name="defaultErrorView" value="error"></property>      <!-- 定義異常處理頁面用來擷取異常資訊的變數名,預設名為exception -->      <property name="exceptionAttribute" value="ex"></property>      <!-- 定義需要特殊處理的異常,用類名或完全路徑名作為key,異常也頁名作為值 -->      <property name="exceptionMappings">          <props>              <prop key="cn.basttg.core.exception.BusinessException">error-business</prop>              <prop key="cn.basttg.core.exception.ParameterException">error-parameter</prop>                <!-- 這裡還可以繼續擴充對不同異常類型的處理 -->          </props>      </property>  </bean>  

方法二:實現HandlerExceptionResolver 介面自訂異常處理器 

//1、增加HandlerExceptionResolver 介面的實作類別MyExceptionHandler,代碼如下: public class MyExceptionHandler implements HandlerExceptionResolver {        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,              Exception ex) {          Map<String, Object> model = new HashMap<String, Object>();          model.put("ex", ex);                    // 根據不同錯誤轉向不同頁面          if(ex instanceof BusinessException) {              return new ModelAndView("error-business", model);          }else if(ex instanceof ParameterException) {              return new ModelAndView("error-parameter", model);          } else {              return new ModelAndView("error", model);          }      }  }  //2、在Spring的設定檔applicationContext.xml中增加以下內容:<bean id="exceptionHandler" class="cn.basttg.core.exception.MyExceptionHandler"/> 

方法三:使用@ExceptionHandler註解實現異常處理 

//1、增加BaseController類,並在類中使用@ExceptionHandler註解聲明異常處理,代碼如下: public class BaseController {      /** 基於@ExceptionHandler異常處理 */      @ExceptionHandler      public String exp(HttpServletRequest request, Exception ex) {                    request.setAttribute("ex", ex);                    // 根據不同錯誤轉向不同頁面          if(ex instanceof BusinessException) {              return "error-business";          }else if(ex instanceof ParameterException) {              return "error-parameter";          } else {              return "error";          }      }  }  //2、修改代碼,使所有需要異常處理的Controller都繼承該類,如下所示,修改後的TestController類繼承於BaseController: public class TestController extends BaseController  

原文:http://blog.csdn.net/ufo2910628/article/details/40399539

【轉】使用Spring MVC統一異常處理實戰

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.