W odpowiedziach gRPC mogą być zwracane te kody stanu: Dotyczy to wszystkich wersji gRPC opisanych na tej stronie.
| Kod | Stan | Uwagi |
|---|---|---|
| 0 | OK |
Powrót: Success |
| 1 | CANCELLED |
Operacja została anulowana, zwykle przez element wywołujący. |
| 2 | UNKNOWN |
Ten błąd może zostać zwrócony, gdy wartość Status otrzymana z innego obszaru adresów należy do obszaru błędów, który nie jest znany w tym obszarze adresów. Ten błąd może też być wynikiem błędów wywołanych przez interfejsy API, które nie zwracają wystarczającej ilości informacji o błędach. |
| 3 | INVALID_ARGUMENT |
Klient podał nieprawidłowy argument. |
| 4 | DEADLINE_EXCEEDED |
Termin upłynął przed zakończeniem operacji. W przypadku operacji, które zmieniają stan systemu, ten błąd może zostać zwrócony nawet wówczas, gdy operacja zakończyła się pomyślnie. Na przykład pomyślna odpowiedź serwera mogła być tak opóźniona, że termin upłynął. |
| 5 | NOT_FOUND |
Nie znaleziono żądanego elementu. |
| 6 | ALREADY_EXISTS |
Encja, którą próbował utworzyć klient, już istnieje. |
| 7 | PERMISSION_DENIED |
Element wywołujący nie ma uprawnień do wykonania określonej operacji. Nie używaj wartości PERMISSION_DENIED w przypadku odrzuceń spowodowanych wyczerpaniem zasobu. W przypadku takich błędów używaj wartości RESOURCE_EXHAUSTED. Nie używaj wartości PERMISSION_DENIED, jeśli nie można zidentyfikować dzwoniącego (w przypadku takich błędów użyj wartości UNAUTHENTICATED). Wystąpienie kodu błędu PERMISSION_DENIED nie oznacza, że żądanie jest prawidłowe, że żądany element istnieje lub że spełnia inne warunki wstępne. |
| 8 | RESOURCE_EXHAUSTED |
Pewien zasób został wyczerpany, np. limit dla użytkownika lub miejsce na pliki na całym systemie. |
| 9 | FAILED_PRECONDITION |
Operacja została odrzucona, ponieważ system nie znajduje się w stanie wymaganym do jej wykonania. Na przykład katalog, który ma zostać usunięty, nie jest pusty lub operacja rmdir jest stosowana do niekatalogu. |
| 10 | ABORTED |
Operacja została przerwana, najczęściej z powodu problemu równoczesności, np. w przypadku nieudanej kontroli sekwencera lub przerwanej transakcji. |
| 11 | OUT_OF_RANGE |
Operacja została przeprowadzona poza prawidłowym zakresem. |
| 12 | UNIMPLEMENTED |
Operacja nie jest wdrożona lub nie jest obsługiwana/włączona w tej usłudze. |
| 13 | INTERNAL |
Błędy wewnętrzne. Oznacza to, że pewne niezmienniki oczekiwane przez system bazowy zostały uszkodzone. Ten kod błędu jest zarezerwowany dla poważnych błędów. |
| 14 | UNAVAILABLE |
Usługa jest obecnie niedostępna. Jest to prawdopodobnie stan przejściowy, który można rozwiązać, ponawiając próbę z większym odstępem. |
| 15 | DATA_LOSS |
Nieodwracalna utrata danych lub ich uszkodzenie. |
| 16 | UNAUTHENTICATED |
Żądanie nie ma prawidłowych danych uwierzytelniających dla tej operacji. |
Czasami może być kilka kodów błędów. Usługi powinny zwracać najbardziej szczegółowy kod błędu. Na przykład preferuj kod OUT_OF_RANGE zamiast FAILED_PRECONDITION, jeśli oba kody są odpowiednie.
Podobnie, użyj NOT_FOUND lub ALREADY_EXISTS zamiast FAILED_PRECONDITION.
FAILED_PRECONDITION vs. ABORTED vs. UNAVAILABLE
Oto test, który pomoże Ci wybrać między FAILED_PRECONDITION, ABORTED i UNAVAILABLE:
- Użyj
UNAVAILABLE, jeśli klient może ponownie wywołać tylko nieudane wywołanie. - Użyj
ABORTED, jeśli klient powinien podjąć kolejną próbę na wyższym poziomie, np. gdy test i ustawienie określone przez klienta się nie powiedzie, co oznacza, że klient powinien ponownie rozpocząć sekwencję odczyt–modyfikacja–zapis. - Użyj wartości
FAILED_PRECONDITION, jeśli klient nie powinien próbować ponownie, dopóki stan systemu nie zostanie poprawiony. Jeśli na przykład polecenie „rmdir” nie powiedzie się, ponieważ katalog nie jest pusty, najlepiej zwrócićFAILED_PRECONDITION, ponieważ klient nie powinien powtarzać próby, chyba że pliki zostaną usunięte z katalogu.
INVALID_ARGUMENT vs. FAILED_PRECONDITION vs. OUT_OF_RANGE
Oto test, który pomoże Ci wybrać między INVALID_ARGUMENT, FAILED_PRECONDITION i OUT_OF_RANGE:
- Użyj
INVALID_ARGUMENT, jeśli argumenty są problematyczne niezależnie od stanu systemu. Przykład: nieprawidłowy format adresu URL - Użyj
OUT_OF_RANGE, jeśli wartość wykracza poza zakres z powodu stanu systemu. Na przykład data rozpoczęcia jest wcześniejsza niżstart_date_restrict. - Użyj wartości
FAILED_PRECONDITION, jeśli jest ona nieprawidłowa ze względu na stan systemu, ale nie jest wartościąOUT_OF_RANGE.