Spring中REST控制器的异常处理程序

时间:2011-11-18 05:51:47

标签: spring spring-mvc exception-handling aop

我想处理异常,因此URL信息会自动显示给客户端。有一个简单的方法吗?

<bean id="outboundExceptionAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver">
    <!-- what property to set here? -->
</bean>

2 个答案:

答案 0 :(得分:4)

您有两种选择:

Spring Reference 15.9.1 HandlerExceptionResolver

  

Spring HandlerExceptionResolvers缓解了意想不到的痛苦   您的请求由控制器处理时发生的异常   符合要求的。 HandlerExceptionResolvers有点类似   您可以在Web应用程序中定义的异常映射   描述符web.xml。但是,它们提供了更灵活的方式   处理异常。它们提供有关哪个处理程序的信息   抛出异常时执行。此外,还是一个程序化的   处理异常的方式为您提供了更多的响应选项   在将请求转发到另一个URL之前(相同的)   结束时使用servlet特定的异常映射时。)

HandlerExceptionResolver有一种方法,包含您需要的所有内容:

HandlerExceptionResolver.resolveException(HttpServletRequest request,
              HttpServletResponse response,
              Object handler, Exception ex) 

或者如果您需要针对不同控制器使用不同的处理程序:Spring Reference Chapter 15.9.2 @ExceptionHandler

@ExceptionHandler(IOException.class)
public String handleIOException(IOException ex, HttpServletRequest request) {
   return "every thing you asked for: " + request;
}

简短的问题简答

答案 1 :(得分:1)

我正在做以下诀窍:

 @ExceptionHandler(Exception.class)
      public ModelAndView handleMyException(Exception  exception) {
         ModelAndView mv = new ModelAndView("redirect:errorMessage?error="+exception.getMessage());
         return mv;
              } 

  @RequestMapping(value="/errorMessage", method=RequestMethod.GET)
  @Responsebody
  public String handleMyExceptionOnRedirect(@RequestParamter("error") String error) {
     return error;
          } 

完美无瑕。

相关问题