由于历史原因,公共团队的很多老应用,在异常处理的部分并没有统一的规范,至于什么时候要去捕获异常,也没有相应的要求。
目前存在的问题如下:
1、到处充斥的try...catch的代码,然后捕获后并不处理,只是打印日志,然后抛出异常。
2、请求处理中出现异常时,并没有完全由统一异常组件捕获并处理,导致异常信息暴露到外部。
3、没有区分好业务异常、输入校验异常、运行时异常。输入校验异常一般返回的是4xx的http状态码;业务异常一般返回200的http状态码,但是返回的数据包中明确定义业务异常错误码和错误信息(未必和定义的错误码一致,防止信息泄露);运行时异常一般返回500的http状态码,返回的数据包中没有明确的错误信息。
4、业务异常错误码没有明确的定义和规范。