我一直在尝试使用简单的基于Spring 3的ReST Web服务进行异常处理。基于我所看到的一切,有一个错误阻止它自动使用@ResponseBody和@ExceptionHandler注释
https://jira.springsource.org/browse/SPR-6902
所以鉴于它在Spring 3.1或3.0.6之前不受支持,目前最好的异常处理方法是什么?我看过很多帖子,但没有找到一个对我有用的明确答案。理想的解决方案是自动为xml和json提供支持
答案 0 :(得分:7)
您可以重定向错误,然后在@ResponseBody
中返回一些内容:
@ExceptionHandler(Exception.class)
public ModelAndView handleMyException(Exception exception) {
return new ModelAndView("redirect:errorMessage?error="+exception.getMessage());
}
@RequestMapping(value="/errorMessage", method=RequestMethod.GET)
@Responsebody
public String handleMyExceptionOnRedirect(@RequestParameter("error") String error) {
return error;
}
有点难看,但这只是解决方法,直到修复可用。
答案 1 :(得分:0)
这是一个很好的解决方法,但有一个补充。 @ExceptionHandler(Exception.class) 应该是 @ExceptionHandler(MyException.class,YourException.class),因为你可以使用常规的Exception类进入循环。
然后,您可以测试(例如,Myexception实例)以确定在需要时显示的消息。