Я использую AnnotationMethodHandlerAdapter по умолчанию, который, я считаю, должен включить поддержку @ExceptionHandler.К несчастью, ServletRequestBindingException генерируется, если поступает вызов метода-обработчика, подобного приведенному ниже, а не вызывается обработчик исключений.
@RequestMapping(value = "/v1/products/{code}", method = RequestMethod.GET, headers = "Accept=application/xml,application/json")
@ResponseBody
public ProductDemoDTO getProductByCode(@PathVariable final String code,
@RequestParam(required = false, defaultValue = "BASIC") final String options)
{
//omitted
}
Здесь ExceptionHandler, никогда не вызывался:
@ExceptionHandler(Throwable.class)
@ResponseBody
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
//TODO not being called?
public void handleException(final Exception e, final HttpServletRequest request, final Writer writer) throws IOException
{
writer.write(String.format("{\"error\":{\"java.class\":\"%s\", \"message\":\"%s\"}}", e.getClass(), e.getMessage()));
}
Кто-нибудь знает, почему не вызывается ExceptionHandler?