歡迎大家各抒己見
背景:微服務,單元化架構中,開發語言是 Java
場景: 1 、服務之間存在多種調用,服務 A->服務 B->服務 C ; 2 、每一個服務都有對應的錯誤碼編號;服務 A:000 ~ 099 ,服務 B:100 ~ 199 ,服務 C:200 ~ 299 ; 3 、x99 爲各個服務的未知異常。
問題:服務 C 如果發生了 RuntimeException 時,但是服務 C 的開發同學沒有考慮到異常情況,服務 C 直接拋出了該異常,這時系統該如何優雅的通知調用方最爲合適呢?
方案: 1 、服務 C 利用框架的擴展能力,將錯誤碼修改爲服務 C 的錯誤碼 399 ,拋出給調用系統; 2 、服務 A 在返回給調用方前,判讀異常是否爲可識別的異常(包含錯誤碼的異常);否則進行包裝,返回錯誤碼 099 。
思考:
1
xuanbg 2023-10-12 08:57:22 +08:00
错误代码并不关键。因为绝大部分的情况下,你仅能告诉用户出错了。而且,大多数的错误,你甚至无法告知用户出错的原因。
只有极少数的情况,你能够并期望用户可以明确地做出响应。只有这种情况需要安排特定的错误代码,其余情况,更加有用的是错误消息而不是错误代码。也就是说,一个错误代码,不同或者相同的错误消息(你无法告知具体错误原因的时候)几乎就能应对 99.99%的异常了。然后,针对具体的几个期望客户端能够作出正确的应对策略的异常,约定独特的错误代码即可。 |