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

Java技术 潘老师 3年前 (2021-03-08) 1513 ℃ (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.把之前的异常处理代码都注释掉,防止被拦截处理

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)


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/2464.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】