第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我不能從 grpc 得到非零響應(yīng)和錯誤

為什么我不能從 grpc 得到非零響應(yīng)和錯誤

Go
哆啦的時光機 2022-06-06 15:01:26
我正在使用 golang 開發(fā) grpc 服務(wù),我觀察到如果出現(xiàn) rpc 錯誤,我會得到response = nil err = some error即使我返回一個非零響應(yīng)和錯誤。但是我也在我的 pb.go 文件中看到:err := c.cc.Invoke(ctx, "/proto.MyService/Hello", in, out, opts...)    if err != nil {        return nil, err    }    return out, nil如果 err 不是 nil ,他們會做出回應(yīng) nil,我想這就是我得到這樣回應(yīng)的原因。我認為在出現(xiàn)錯誤時獲得響應(yīng)是沒有意義的,但是,有沒有辦法可以從 grpc 獲得非零響應(yīng)和錯誤?
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經(jīng)驗 獲得超8個贊

原因很簡單。gRPC 是 RPC(遠程過程調(diào)用)概念的特定實現(xiàn),其中調(diào)用另一個進程,就好像它是您系統(tǒng)的一部分。gRPC 可以交叉編譯到其他語言,包括一次不支持多個返回值的語言(例如 C++、Java)。生成的客戶端將拋出異常,而不是返回錯誤。因此,除了錯誤之外,您返回的任何響應(yīng)都將被忽略,從而降低您的實現(xiàn)的可移植性。

雖然 go 支持兩者,但我們不希望 RPC 根據(jù)實現(xiàn)客戶端的特定語言產(chǎn)生不同的結(jié)果。pb.go文件還應(yīng)該做什么,除了:如果發(fā)生錯誤,所有信息都應(yīng)該在錯誤,如果沒有,應(yīng)該返回響應(yīng)?

豐富您返回的錯誤,如果您仍然發(fā)現(xiàn)自己需要兩者。


查看完整回答
反對 回復(fù) 2022-06-06
?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

正如官方文檔中解釋的那樣,標準的 gRPC 錯誤是一個代碼和一個附加的錯誤字符串。

如果您需要獲得某種響應(yīng),請使用豐富的錯誤模型來包含響應(yīng)。有關(guān)gRPC 中豐富錯誤處理的示例檢查模式


查看完整回答
反對 回復(fù) 2022-06-06
  • 2 回答
  • 0 關(guān)注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號