Spring REST API自定义异常处理

时间:2013-07-04 11:52:49

标签: spring spring-mvc

我有一个Spring 3.2应用程序,我已经创建了一个基于Spring MVC的REST API。我正在使用@ControllerAdvice批注进行自定义异常处理。例如:

@ControllerAdvice
public class RestResponseEntityExceptionHandler {

    @ExceptionHandler(MyCustomException.class)
    @ResponseStatus(HttpStatus.CONFLICT)
    @ResponseBody
    public ExceptionMessage handleMyCustomException(MyCustomException ex){
        return new ExceptionMessage(ex.getClass().getName(), ex.getMessage(), ex.getExceptionCode());
    }
}

问题是我看到我的自定义异常是如何抛出但异常处理程序方法实际上没有被执行,因此我的异常消息不会返回给客户端。相反,我在日志中注意到DefaultHandlerExceptionResolver如何处理异常(在GET方法中使用Spring泛型,ServletRequestBindingException)。我该怎样摆脱这个问题?

谢谢!

1 个答案:

答案 0 :(得分:0)

ServletRequestBindingException提示在控制器的处理程序方法之前出现了问题。在这种情况下,一些约束问题。

只有在控制器处理程序方法(@ExceptionHandler)中抛出异常时才会调用带有@RequestMapping注释的异常处理程序。