一、HandlerExceptionResolver
spring HandlerExceptionResolvers 可以简化请求中,不被期望的异常出现的尴尬情况。HandlerExceptionResolvers有点类似可以自定义的异常映射。尽管如此,它提供了一个更加灵活的方式来处理异常。它提供捕获异常的处理器的信息。此外,还提供了一个可编程的异常处理方式,给予了我们更多的选择方式在一个请求被传递到其他URL之前去处理。
此外,实现HandlerExceptionResolver接口,并实现其中的resolveException(Exception, Handler) 并返回一个ModelAndView。我们也可以使用SimpleMappingExceptionResolver类,这个类可以通过设置简单的异常名称和映射的错误页面。这样,功能上相当于Servlet API的异常映射功能 ,但它还提供了额外的细粒度的其他处理异常。
Exception HTTP Status Code
ConversionNotSupportedException 500 (Internal Server Error)
HttpMediaTypeNotAcceptableException 406 (Not Acceptable)
HttpMediaTypeNotSupportedException 415 (Unsupported Media Type)
HttpMessageNotReadableException 400 (Bad Request)
HttpMessageNotWritableException 500 (Internal Server Error)
HttpRequestMethodNotSupportedException 405 (Method Not Allowed)
MissingServletRequestParameterException 400 (Bad Request)
NoSuchRequestHandlingMethodException 404 (Not Found)
TypeMismatchException 400 (Bad Request)
一个HandlerExceptionResolver 的替代方案是使用@ExceptionHandler 注解。我们可以在一个controller中使用@ExceptionHandler 注解的方法来指定当controller出现异常时调用那个方法来处理。
@Controller
public class SimpleController {
// other controller method omitted
@ExceptionHandler(IOException.class)
public String handleIOException(IOException ex, HttpServletRequest request) {
return ClassUtils.getShortName(ex.getClass());
}
}
当java.io.IOException发生时,将会调用'handlerIOException' 方法。
--------------------------
如果你对java、swing、各种框架、javascript、css、linux、数据库编程等知识很感兴趣,或者正在从事这些工作,
欢迎加入我的qq技术交流群:java不瘸腿(219345774)