下列狀態碼可在 gRPC 回應中傳回,適用於本網站記錄的所有 gRPC 版本。
代碼 | 狀態 | 附註 |
---|---|---|
0 | OK |
返回 Success |
1 | CANCELLED |
作業已取消 (通常由呼叫端取消)。 |
2 | UNKNOWN |
舉例來說,當從其他位址空間收到的「Status」值屬於這個位址空間中不明的錯誤空間時,就可能傳回此錯誤;由 API 發出但未傳回充分錯誤資訊的錯誤,也可能會轉換為此錯誤。 |
3 | INVALID_ARGUMENT |
用戶端指定了無效的引數。 |
4 | DEADLINE_EXCEEDED |
在作業完成前已過期。針對會變更系統狀態的作業,即使作業順利完成也有可能會傳回這個錯誤,舉例來說,雖然伺服器成功提供回應,但因為延遲時間過長而導致超過期限。 |
5 | NOT_FOUND |
找不到某些要求的實體。 |
6 | ALREADY_EXISTS |
用戶端嘗試建立的實體已存在。 |
7 | PERMISSION_DENIED |
呼叫端沒有執行指定作業的權限。對於因耗用某些資源所導致的拒絕情形,請改用 RESOURCE_EXHAUSTED 。PERMISSION_DENIED 如果無法識別呼叫端,請勿使用 PERMISSION_DENIED (若發生這類錯誤,請改用 UNAUTHENTICATED )。收到 PERMISSION_DENIED 錯誤代碼並不表示要求有效,或是要求的實體已存在或是滿足其他先決條件。 |
8 | RESOURCE_EXHAUSTED |
已耗盡某些資源 (可能是每位使用者的配額,也可能是整個檔案系統的空間不足)。 |
9 | FAILED_PRECONDITION |
作業已遭拒絕,因為系統未處於執行該作業所需的狀態,例如要刪除的目錄非空白,或 rmdir 作業套用至非目錄。 |
10 | ABORTED |
作業已取消,原因通常是排序器檢查失敗或交易取消等並行問題。 |
11 | OUT_OF_RANGE |
嘗試執行的作業超出有效範圍。 |
12 | UNIMPLEMENTED |
未實作該作業,或在此服務中不支援/未啟用該作業。 |
13 | INTERNAL |
發生內部錯誤,這表示基礎系統預期的特定不變值已損毀。此錯誤代碼保留給嚴重錯誤使用。 |
14 | UNAVAILABLE |
目前無法提供服務;這很可能是暫時性問題,可透過重試輪詢來解決。 |
15 | DATA_LOSS |
無法復原的資料遺失或損毀。 |
16 | UNAUTHENTICATED |
要求中不含作業的有效驗證憑證。 |
有時可能有多個錯誤代碼適用,服務應傳回最適用的特定錯誤代碼。舉例來說,假如 OUT_OF_RANGE
和 FAILED_PRECONDITION
這兩個代碼都適用,建議您優先使用前者。同樣地,請盡量使用 NOT_FOUND
或 ALREADY_EXISTS
而非 FAILED_PRECONDITION
。
FAILED_PRECONDITION、ABORTED 與 UNAVAILABLE 的比較
以下是判斷準則,可協助您決定要使用 FAILED_PRECONDITION
、ABORTED
還是 UNAVAILABLE
:
- 如果用戶端只能重試失敗的呼叫,請使用
UNAVAILABLE
。 - 如果用戶端應在較高層級重試 (例如當用戶端指定的「test-and-set」失敗時,表示用戶端應重新開始「read-modify-write」序列),請使用
ABORTED
。 - 如果用戶端不應在系統狀態明確修正完畢之前重試,請使用
FAILED_PRECONDITION
。舉例來說,如果「rmdir」因目錄非空白而失敗,則最好傳回FAILED_PRECONDITION
,因為用戶端必須等到目錄中的檔案都刪除之後才重試。
INVALID_ARGUMENT、FAILED_PRECONDITION 與 OUT_OF_RANGE 的比較
以下是判斷準則,可協助您決定要使用 INVALID_ARGUMENT
、FAILED_PRECONDITION
還是 OUT_OF_RANGE
:
- 如果引數有問題,則無論系統狀態為何,一律使用
INVALID_ARGUMENT
例如:網址格式錯誤 - 如果值因系統狀態而超出範圍,請使用
OUT_OF_RANGE
。例如,start_date 早於start_date_restrict
。 - 如果值因系統狀態而無效,但不是
OUT_OF_RANGE
值,請使用FAILED_PRECONDITION
。