如何构建springcloud微服务中的异常处理体系
2018年8月20日
|
阅读
需求
- 对于我们的任何系统而言一般分为正常的业务流程和异常业务流程
- 我们希望业务在编写正常的业务逻辑的时候,无需去考虑处理异常的业务流程,异常对于正常的业务是完全分离的,透明的。
- 我们希望前端也能有一套异常处理体系(在前后端分离下尤为重要)
目标
- 搭建异常处理体系流程,统一的进行异常的管理和对应的处理(包括前后端)
- 利用spring提供的全局异常处理器完成后端的server异常统一处理
- 利用zuul的ErrorFilter统一处理网关相关异常
- 利用Feign对异常的处理方式,及其扩展,完成服务调服务(S2S)时候异常透明的传递。
- 利用dvs 的 app.use 方法注册自己的全局异常处理器插件,完成前端的异常流程体系
异常类型的定义
- 都说是异常处理体系了,当然最离不开的就是Exception,由于在java中的异常能够打断正常的业务流程。向上抛出,利用这里一点,我们可以在最上层,对抛出的异常进行捕捉,可以统一的进行异常的管理和对应的处理
- 在java中要拥有被抛的权利,必须继承Exception相关的类,而这些类中有一个特别符合我们的预期,那就是RuntimeException,即运行时异常。
- 既然是通过异常的向上抛机制来统一处理异常,那么就离不开自定义一些个异常类型,根据实际的开发经验得出,我们可以使用少量自定义异常 + code(然鹅,code大部分时候没暖用) + message(主要是message才有用完成整个的异常处理
- 实际情况中