springmvc对异常的处理

springmvc中可以将底层的异常进行上抛,其模式类似于职责链模式,最后,在controller层进行异常捕获处理。其方法有三种:

1.对于异常处理可以运用springmvc提供的@ExceptionHandler({Exception.class})表示指定异常处理类,其方法参数可以指定异常也可以泛化为Exception接口,执行相应的处理异常逻辑,其返回值可以ModelAndView返回给前端。也可以在方法前添加@ResponseStatus(HttpStatus.OK)
    @ResponseBody进行以json数据返回给前端。

2.其实在处理异常的指定handler类中,可以不一一写@ExceptionHanlder方法,可以将其定义一个父类Controller进行实现@ExceptionHandler方法,其他通过继承的方式。

3.实际比较多运用@ControllerAdvice标签指定类,中的@ExceptionHandler方法进行处理。其抛异处理的过程是:当异常已经抛到当前的controller顶层,其发现controller中没有定义异常的处理类,其springmvc会查找有没有@ControllerAdvice标记的类对应的@ExceptionHandler。

注:异常也有有优先级,其处理通常是定义的异常较为接近的方法进行处理。

对于这些标签的运用必须在springmvc配置文集中添加<mvc:annotation-driver/>,加了这注解,springmvc会实现注入:

ExceptionHandlerExceptionResolver

ResponseStatusExceptionResolver

DefaultHandlerExceptionResolver

如果不加入<mvc:annotaion-driver/>其只实现对:

AnnotaionMethodHandlerExceptionResolver     该方法已近过期

ResponseStatusExceptionResolver

DefaultHandlerExceptionResolver

猜你喜欢

转载自blog.csdn.net/weixin_39573518/article/details/89052846