2016-07-15 128 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()); 
}