异常处理——SpringMVC框架系列教程(13)

IT 文章5年前 (2021)发布 小编
0 0 0

SpringMVC处理异常的顶级接口:HandlerExceptionResolver,该接口的每个实现类都是处理异常的一种方式:
1)ExceptionHandlerExceptionResolver:该子类主要提供了@ExceptionHandler注解,并通过该注解处理异常
a)@ExceptionHandler
controller测试方法:
异常处理——SpringMVC框架系列教程(13)
controller处理方法:
异常处理——SpringMVC框架系列教程(13)
测试:
异常处理——SpringMVC框架系列教程(13)
b)如果一个方法处理多个异常,可以这样写:
异常处理——SpringMVC框架系列教程(13)
@ExceptionHandler注解方法的参数,只能是异常类型的参数或其子类,不能是其他类型的参数,如果有其他类型的参数,则异常不会处理。如果想将异常带回页面显示,可以使用ModelAndView带回。
异常处理——SpringMVC框架系列教程(13)
c)异常处理优先级
异常处理——SpringMVC框架系列教程(13)
如果这个类中出现了ArithmeticException异常,则第一个方法会捕获到。
优先级:就近原则。

d)@ControllerAdvice
@ExceptionHandler只能捕获当前类中的异常,如果异常产生方法和处理方法不在一个类中,该如何?
可以自定义异常处理类,在类上使用@ControllerAdvice注解,在方法上使用@ExceptionHandler注解。
注意:如果自定义异常处理类不是放在controller包中,需要将该包加入到springmvc.xml的包扫描注解中。
异常处理——SpringMVC框架系列教程(13)

2)ResponseStatusExceptionResolver:该子类用于自定义异常显示页面,提供了@ResponseStatus注解
可以指定状态码和原因
演示:
i.把之前的异常处理代码都注释掉,防止被拦截处理

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

ii.自定义exception,加上@ResponseStatus注解,只要有方法排除此异常,状态码和原因就是这里定义的。
异常处理——SpringMVC框架系列教程(13)
iii.代码
异常处理——SpringMVC框架系列教程(13)
iiii.测试
异常处理——SpringMVC框架系列教程(13)
e)@ResponseStatus注解也可以使用在方法上
代码:
异常处理——SpringMVC框架系列教程(13)
测试:
异常处理——SpringMVC框架系列教程(13)
3)DefaultHandlerExceptionResolver:
SpringMVC在一些常见的异常(比如300,404,500)基础之上新增了一些异常,例如 405
(在RequestMapping要求POST请求,却使用get请求时会出现)

4)SimpleMappingExceptionResolver
通过配置来实现异常处理
演示:
代码:
异常处理——SpringMVC框架系列教程(13)
配置(prop可以指定捕获多个):
异常处理——SpringMVC框架系列教程(13)
测试:
异常处理——SpringMVC框架系列教程(13)
如果想将捕获到异常对象回传,可以使用一个属性(如果不配置,默认值就是exception):
异常处理——SpringMVC框架系列教程(13)

© 版权声明

相关文章

暂无评论

暂无评论...