如何构建springcloud微服务中的异常处理体系

需求

  • 对于我们的任何系统而言一般分为正常的业务流程和异常业务流程
  • 我们希望业务在编写正常的业务逻辑的时候,无需去考虑处理异常的业务流程,异常对于正常的业务是完全分离的,透明的。
  • 我们希望前端也能有一套异常处理体系(在前后端分离下尤为重要)

目标

  • 搭建异常处理体系流程,统一的进行异常的管理和对应的处理(包括前后端)
  • 利用spring提供的全局异常处理器完成后端的server异常统一处理
  • 利用zuul的ErrorFilter统一处理网关相关异常
  • 利用Feign对异常的处理方式,及其扩展,完成服务调服务(S2S)时候异常透明的传递。
  • 利用dvs 的 app.use 方法注册自己的全局异常处理器插件,完成前端的异常流程体系

异常类型的定义

  • 都说是异常处理体系了,当然最离不开的就是Exception,由于在java中的异常能够打断正常的业务流程。向上抛出,利用这里一点,我们可以在最上层,对抛出的异常进行捕捉,可以统一的进行异常的管理和对应的处理
  • 在java中要拥有被抛的权利,必须继承Exception相关的类,而这些类中有一个特别符合我们的预期,那就是RuntimeException,即运行时异常。
  • 既然是通过异常的向上抛机制来统一处理异常,那么就离不开自定义一些个异常类型,根据实际的开发经验得出,我们可以使用少量自定义异常 + code(然鹅,code大部分时候没暖用) + message(主要是message才有用完成整个的异常处理
  • 实际情况中