3 回答
TA贡献1951条经验 获得超3个赞
1、如果你这个系统是新系统/或者以后会有更多的子系统依赖 建议还是规范起来
1.1、如果对外提供的是jar包直接抛异常 没关系
1.2、如果走如http/webservice 提供一个异常到错误码的映射(比如直接写到异常里) 这个是标准的 以后的标准
1.3、对于遗留系统 提供一个转换处理器(如spring对jdbc、hibernate等的都转换为DataAccessException)
如果外部系统能改造的话 建议沟通下一起改造下 否则就要他们提供当前系统的错误码 然后联调(可能存在bug 很正常的 所以要全面测试)
1.4、考虑下spring的NestedException 嵌套异常 来存储原始异常
1.5、如果可以放弃checkedException 如web系统都会有一个异常解析器 出错了 会交给他 所以unchecked即可
TA贡献1863条经验 获得超2个赞
“简单是最好”,我推荐第二种。
自定义异常,继承自RuntimeException。
映射不一定需要。我觉得外系统id + 错误代码(没有时自己定制)足以简单区分异常。
【1】里面可能需要定义两个,业务异常和系统异常。但无论哪种都是RuntimeException。
(是否runtime这个有争论,我个人推荐全部runtime,无须强制捕捉。)
总之,
继承层数少些
结构简单些。
无须强制 <- 个人意见
最后,统一处理所有异常的地方可能需要映射,不同异常对应不同处理方式。
如果没有这种需求,也无须搞映射。能区分即可。
“如无必要,勿增实体”——奥卡姆剃刀定律
添加回答
举报