Spring 4 mvc全局异常处理

时间:2016-07-15 03:29:07

标签: spring spring-mvc jersey-2.0

我很高兴春天mvc抱歉,如果我问一个基本问题,我需要在我的Spring 4 MVC,Jersey项目中维护全局异常处理并返回对IOS移动应用程序的JSON响应。现在通过使用@ControllerAdvice和@ExceptionHandler,我创建了一个类如下

@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 ...
    }

如果上述方法是正确的,或者有任何替代方法来处理控制器,服务和DAO层中发生的所有异常,请提供建议。

1 个答案:

答案 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());
}