W odpowiedziach gRPC mogą być zwracane poniższe kody stanu. Dotyczy to wszystkich wersji gRPC opisanych na tej stronie.
Kod | Stan | Uwagi |
---|---|---|
0 | OK |
Wróć: Success |
1 | CANCELLED |
Operacja została anulowana, zwykle przez element wywołujący. |
2 | UNKNOWN |
Ten błąd może zostać zwrócony, na przykład gdy wartość Stan otrzymana z innej przestrzeni adresowej należy do przestrzeni błędów, która nie jest znana w tej przestrzeni adresowej. Także błędy zgłaszane przez interfejsy API, które nie zwracają wystarczającej ilości informacji o błędzie, mogą być konwertowane na ten błąd. |
3 | INVALID_ARGUMENT |
Klient podał nieprawidłowy argument. |
4 | DEADLINE_EXCEEDED |
Termin minął przed ukoń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. Może to być na przykład pomyślna odpowiedź z serwera, która była opóźniona na tyle długo, że termin upłynął. |
5 | NOT_FOUND |
Nie znaleziono żądanego elementu. |
6 | ALREADY_EXISTS |
Encja, którą klient próbował utworzyć, już istnieje. |
7 | PERMISSION_DENIED |
Element wywołujący nie ma uprawnień do wykonania określonej operacji. Nie używaj właściwości PERMISSION_DENIED do odrzuceń spowodowanych wyczerpaniem się niektórych zasobów. W przypadku tych błędów użyj pola RESOURCE_EXHAUSTED . Nie używaj ustawienia PERMISSION_DENIED , jeśli nie można zidentyfikować rozmówcy (w przypadku tych błędów użyj elementu UNAUTHENTICATED ). Otrzymanie kodu błędu PERMISSION_DENIED nie oznacza, że żądanie jest prawidłowe, żądana jednostka istnieje lub spełnia inne warunki wstępne. |
8 | RESOURCE_EXHAUSTED |
Część zasobów została wyczerpana – na przykład limit na użytkownika lub w całym systemie plików nie ma już miejsca. |
9 | FAILED_PRECONDITION |
Operacja została odrzucona, ponieważ system nie znajduje się w stanie wymaganym do jej wykonania. Na przykład katalog do usunięcia nie jest pusty lub operacja rmdir jest stosowana do katalogu innego niż katalog. |
10 | ABORTED |
Operacja została przerwana, zwykle z powodu problemu równoczesności, takiego jak błąd kontroli sekwencera lub przerwanie transakcji. |
11 | OUT_OF_RANGE |
Podjęto próbę wykonania operacji 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 niektóre 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 najprawdopodobniej stan przejściowy, który można skorygować, jeśli ponownie spróbujesz z opóźnieniem. |
15 | DATA_LOSS |
Nieodwracalna utrata danych lub ich uszkodzenie. |
16 | UNAUTHENTICATED |
Żądanie nie ma prawidłowych danych uwierzytelniających tej operacji. |
Czasami może pojawić się kilka kodów błędu. Usługi powinny zwracać
najdokładniejszy kod błędu, który występuje. Możesz na przykład wybrać kod OUT_OF_RANGE
zamiast FAILED_PRECONDITION
, jeśli mają zastosowanie oba kody.
Podobnie preferuj NOT_FOUND
lub ALREADY_EXISTS
zamiast FAILED_PRECONDITION
.
FAILED_PREPOLICY vs. ABORTED (niedostępny)
To jest test lakmusowy, który pomoże Ci wybrać wartości: FAILED_PRECONDITION
, ABORTED
i UNAVAILABLE
:
- Użyj metody
UNAVAILABLE
, jeśli klient może ponawiać próbę tylko nieudanego połączenia. - Użyj
ABORTED
, jeśli klient powinien ponawiać próbę na wyższym poziomie, na przykład wtedy, gdy określony przez klienta test i zestaw zakończy się niepowodzeniem, co oznacza, że klient powinien ponownie uruchomić sekwencję odczytu, modyfikacji i zapisu. - Użyj
FAILED_PRECONDITION
, jeśli klient nie powinien ponawiać próby, dopóki stan systemu nie zostanie bezpośrednio poprawiony. Jeśli np. błąd „rmdir” występuje, ponieważ katalog nie jest pusty, najlepiej zwrócić kodFAILED_PRECONDITION
, bo klient nie powinien próbować ponownie, chyba że pliki zostaną usunięte z katalogu.
FAILED_ATTRIBUTE – FAILED_PRECondition w porównaniu z OUT_OF_RANGE
To jest test lakmusowy, który pomoże Ci wybrać wartości: INVALID_ARGUMENT
, FAILED_PRECONDITION
i OUT_OF_RANGE
:
- Użyj
INVALID_ARGUMENT
, jeśli argumenty powodują problemy niezależnie od stanu systemu. Przykład: nieprawidłowy format adresu URL - Użyj
OUT_OF_RANGE
, jeśli wartość jest poza zakresem ze względu na stan systemu. np. data_początkowa przypada przedstart_date_restrict
. - Użyj
FAILED_PRECONDITION
, jeśli wartość jest nieprawidłowa ze względu na stan systemu, ale nie jest wartościąOUT_OF_RANGE
.