接口(函数)
1:本地接口(结果分2类)
--业务成功
--业务失败(子结果分2类)
--符合程序期望逻辑的业务失败
--不符合程序期望逻辑的业务失败
2:远程接口(结果分2类)
--调用成功,业务成功
--调用成功,业务失败(子结果分2类)
--符合程序期望逻辑的业务失败
--不符合程序期望逻辑的业务失败
--调用失败
1:本地接口(结果分2类)
--业务成功
--业务失败(子结果分2类)
--符合程序期望逻辑的业务失败
--不符合程序期望逻辑的业务失败
2:远程接口(结果分2类)
--调用成功,业务成功
--调用成功,业务失败(子结果分2类)
--符合程序期望逻辑的业务失败
--不符合程序期望逻辑的业务失败
--调用失败
--网络或者其他原因导致的失败
错误码举例:
SUCCESS-调用成功,业务成功
SYSTEM_ERROR-调用成功,单不符合程序期望逻辑的业务失败 或者是远程接口的调用失败
ILLEGAL_ARRGUMENT-调用成功,符合程序期望逻辑的业务失败
所有接口的返回值都能涵盖在其中。
打日志时,针对SYSTEM_ERROR类日志可以单独进行打印,记住带上相应的参数和失败的堆栈信息,日志级别为error级别;
所以在任何的对外接口处最好try catch一下throwable捕捉程序意料之外的bug,并将参数和堆栈信息打入到error日志中,方便后续调试程序使用
对于提供给其他业务方使用的对外的接口,还应该提供一种SYSTEM_UNAVAILABLE或者INTERFACE_CLOSED的错误码用来区分SYSTEM_ERROR
SYSTEM_UNAVABLE(INTERFACE_CLOSED)代表的是系统因为故障而暂时关闭对外的接口,属于降级方案。
而SYSTEM_ERROR是偶然出现的程序缺陷,比如DAO_ERROR这种的错误。