Spring-webmvc

配置异常处理器

2019-07-08  本文已影响0人  xzz4632

1. 异常解析类:

如果在请求映射或请求处理过程中发生了异常, DispatcherServlet会将其委托给HandlerExceptionResolver bean链来处理异常.
常见的HandlerExceptionResolver实现如下:

HandlerExceptionResolver 说明
SimpleMappingExceptionResolver 异常类名称与错误视图页面之间的映射
DefaultHandlerExceptionResolver spring mvc抛出的异常与HTTP状态码之间的映射的默认定义
ResponseStatusExceptionResolver 根据@ResponseStatus注解的值匹配异常到相应的HTTP状态码
ExceptionHandlerExceptionResolver 通过调用@Controller或@ControllerAdvice类中的@ExceptionHandler注解方法来解析异常.

2. 配置异常

2.1 异常与HTTP状态码之间映射

使用@ResponseStatus注解. 注解应用在异常类上.其属性有:

@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "user not found")
public class UserNotFoundException extends RuntimeException {

    private static final long serialVersionUID = 1L;

}
2.2 @ExceptionHandler注解

定义异常处理方法并加上@ExceptionHandler注解, 方法可以定义在@Controller类或@ControllerAdvice类中:

异常方法的定义同@RequestMapping方法. 可以通过参数定义处理的异常类型(这只能定义一个类别), 也可以在注解中指定(可以指定多个, 然后定义一个它们的父类型作为参数来接收它们的信息).

@ExceptionHandler({IOException.class, UserNotFoundException.class})
public String handlerException(Exception e) {
    System.out.println(e.getMessage());
    return "error";
}
2.3 HTTP错误状态码与错误页面之间的映射

web.xml中定义<error-page>元素, 指定状态码和页面路径.

<error-page>
    <error-code>500</error-code>
    <location>/view/500</location>
</error-page>

<!--对于未定义的状态码将统一跳转到这个页面-->
<error-page>
    <location>/error</location>
</error-page>

注1:<error-page>元素中还存在一个<exception-type>子元素, 这是用来定义异常类型(指定异常类型)与错误页面之间的映射.
注2:暂不支持Java配置异常页面映射.

上一篇 下一篇

猜你喜欢

热点阅读