使用spring编写一个全局异常拦截器-创新互联
本篇文章给大家分享的是有关使用spring编写一个全局异常拦截器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
成都创新互联是一家专注于成都网站制作、成都网站建设、外贸营销网站建设与策划设计,源城网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:源城等地区。源城做网站价格咨询:13518219792为什么要重复造轮子
你可能会问,Spring已经自带了全局异常拦截,为什么还要重复造轮子呢?
这是个好问题,我觉得有以下几个原因
- 装逼
- Spring的全局异常拦截只是针对于Spring MVC的接口,对于你的RPC接口就无能为力了
- 无法定制化
- 除了写业务代码,我们其实还能干点别的事
我觉得上述理由已经比较充分的解答了为什么要重复造轮子,接下来就来看一下怎么造轮子
造个什么样的轮子?
我觉得全局异常拦截应该有如下特性
- 使用方便,好和spring原生的使用方式一致,降低学习成本
- 能够支持所有接口
- 调用异常处理器可预期,比如说定义了RuntimeException的处理器和Exception的处理器,如果这个时候抛出NullPointException,这时候要能没有歧义的选择预期的处理器
如何造轮子?
由于现在的应用基本上都是基于spring的,因此我也是基于SpringAop来实现全局异常拦截
首先先定义几个注解
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface ExceptionAdvice { } @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ExceptionHandler { Class<? extends Throwable>[] value(); } @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ExceptionIntercept { }
本文标题:使用spring编写一个全局异常拦截器-创新互联
本文路径:http://abwzjs.com/article/jghec.html