2016-07-15 140 views
1

我對spring mvc很陌生抱歉,如果我提出一個基本問題,我需要在Spring 4 MVC,Jersey項目中維護Global Exception Handling並返回JSON響應給IOS移動應用程序。現在,通過使用@ControllerAdvice和@ExceptionHandler,我創建了一個類一樣,如果上面的方法是正確的,還是有處理髮生在控制器,服務和DAO層的所有異常任何替代方法如下Spring 4 mvc全局異常處理

@ControllerAdvice 
public class GlobalExceptionHandlerController { 

    @ExceptionHandler(Exception.class) 
    public @ResponseBody handleException(HttpServletRequest reqException ex) { 
      ErrorInfo response=new ErrorInfo(); 
        if(ex.getMessage.contains("java.io")){ 
        response.setMessage("FileNotFound exception occur"); 
         return response; 
        }else if ... 
    } 

請指點。

+0

這與澤西島有什麼關係?我在你的帖子中看到有關澤西島的參考資料,但我沒有看到任何其他支持細節。 –

回答

2

你使用的是正確的,所有的異常都會被處理。在服務或Dao層,你只需要拋出你的業務異常。你創建的類將捕獲異常。但是你應該以不同的方式處理異常,並定義您自己的業務例外。 這裏是一些示例代碼。

@ExceptionHandler(RuntimeException.class) 
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) 
@ResponseBody 
public ErrorResponse handleUnexpectedServerError(RuntimeException ex) { 
    ex.printStackTrace(); 
    return new ErrorResponse("012", ex.getMessage()); 
} 

處理業務異常,BusinessErrorException是自定義異常。

@ExceptionHandler(BusinessErrorException.class) 
@ResponseStatus(value = HttpStatus.BAD_REQUEST) 
@ResponseBody 
public ErrorResponse handleBusinessErrorException(BusinessErrorExceptionex) { 

    return new ErrorResponse(ex.getCode(), ex.getMessage()); 
}