我有一个 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 如何处理异常(使用 Spring 通用异常,ServletRequestBindingException
在 GET 方法中)。我怎样才能摆脱这个问题?
谢谢!