现在有个项目,遇到错误代码和异常处理方面的问题,请教各位高手。
背景:项目对外提供服务,这些服务是对很多外部系统提供服务的封装,每个外部系统有自己的错误代码,没有统一的规范。有些外部系统自己规范都不统一,有的时候返回错误代码,有的时候返回错误信息,有的时候错误代码和错误信息在一起。
目前可选的解决方案:
一、直接使用外系统错误代码
方法:直接使用外系统错误代码
问题:混乱,错误代码可能重复,排除该方法
二、使用统一的错误代码
方法:对外部系统的错误代码重新编排,按照模块进行分类,没有错误代码的错误当做未知错误。
问题:需要维护一个错误代码列表及映射关系,对于外部系统错误不规范的情况,需要有专门的代码进行处理
三、使用异常,统一当做checked exception处理
方法:继承Exception
问题:不符合异常处理最佳实践,有些应该是RuntimeException的也被强制要求捕获了
四、使用异常,根据外系统错误类型区分是checked exception还是unchecked exception
方法:根据外部系统类型,区分哪些是程序逻辑问题(继承RuntimeException),哪些是系统问题(继承Exception),映射成不同的异常类型
问题:外系统错误说明可能有误,导致映射到异常时类型不准确
针对这种情况,各位觉得应该使用哪种方式处理比较好,另外,对于异常的类层次结构实践经验不多,只是简单看过Spring的异常类设计,有哪些好的书或资料可以学习一下。
饮歌长啸
小唯快跑啊
相关分类