2013-03-07 68 views
0

我們有2套控制器..一個用於返回HttpEntity(用於ajax調用)和一個用於ModelAndView的響應。所有控制器都擴展了一個BaseController,並在其中定義了異常處理。如何爲不同的響應類型使用@ExceptionHandler

@ExceptionHandler(Exception.class) 
@ResponseBody 
public ResponseEntity<String> handleException(final Exception e) { 
    return new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); 
} 

但是這個控制器只處理與響應'HttpEntity'但不是ModelAndView相關的控制器的異常。在這種情況下,我需要兩個基本控制器來處理異常,還是我可以修改這個現有的BaseController來處理所有異常?

+0

您是否嘗試添加另一個返回ModelAndView的異常處理程序? – CodeChimp 2013-03-07 21:15:11

+0

試過,但沒有運氣。通常它會輸入與輸入參數匹配的第一個函數。 – user864077 2013-03-07 22:59:09

+0

以@Arahant的說法,你可能想考慮的一件事是將錯誤處理推送到你的控制器實現中,但是將實際方法的主體移到錯誤處理服務類中,這樣你就可以將代碼維護在一個地方。 – CodeChimp 2013-03-08 14:02:53

回答

0

對於每個控制器,您應該有一個單獨的handleException方法。

您應該只在BaseController中放置通用代碼,但異常處理程序顯然不常見,因爲它們具有不同的邏輯。

+0

我認爲他所要完成的是爲所有控制器制定一個通用的錯誤處理流程。如果他將錯誤處理推入控制器,那麼他將維護相同錯誤處理過程的多個副本。 – CodeChimp 2013-03-08 14:01:53

相關問題