使用spring编写一个全局异常拦截器-创新互联

本篇文章给大家分享的是有关使用spring编写一个全局异常拦截器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

成都创新互联是一家专注于成都网站制作、成都网站建设、外贸营销网站建设与策划设计,源城网站建设哪家好?成都创新互联做网站,专注于网站建设10余年,网设计领域的专业建站公司;建站业务涵盖:源城等地区。源城做网站价格咨询:13518219792

为什么要重复造轮子

你可能会问,Spring已经自带了全局异常拦截,为什么还要重复造轮子呢?

这是个好问题,我觉得有以下几个原因

  1. 装逼
  2. Spring的全局异常拦截只是针对于Spring MVC的接口,对于你的RPC接口就无能为力了
  3. 无法定制化
  4. 除了写业务代码,我们其实还能干点别的事

我觉得上述理由已经比较充分的解答了为什么要重复造轮子,接下来就来看一下怎么造轮子

造个什么样的轮子?

我觉得全局异常拦截应该有如下特性

  1. 使用方便,好和spring原生的使用方式一致,降低学习成本
  2. 能够支持所有接口
  3. 调用异常处理器可预期,比如说定义了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