Os códigos de status a seguir podem ser retornados nas respostas do gRPC. Isso acontece em todas as versões do gRPC documentadas neste site.
Código | Status | Observações |
---|---|---|
0 | OK |
Retorno em Success |
1 | CANCELLED |
A operação foi cancelada, geralmente pelo chamador |
2 | UNKNOWN |
Por exemplo, este erro pode ser retornado quando um valor de status recebido de outro espaço de endereço pertence a um espaço de erro desconhecido. Além disso, os erros gerados por APIs que não retornam informações suficientes podem ser convertidos para esse erro. |
3 | INVALID_ARGUMENT |
O cliente especificou um argumento inválido. |
4 | DEADLINE_EXCEEDED |
O prazo expirou antes da conclusão da operação. Para operações que alteram o estado do sistema, este erro pode ser retornado mesmo que a operação seja concluída com êxito. Por exemplo, uma resposta bem-sucedida de um servidor que atrasou tempo suficiente para que o prazo expirasse. |
5 | NOT_FOUND |
Algumas entidades solicitadas não foram encontradas. |
6 | ALREADY_EXISTS |
A entidade que um cliente tentou criar já existe. |
7 | PERMISSION_DENIED |
O autor da chamada não tem permissão para executar a operação especificada. Não use PERMISSION_DENIED para rejeições causadas pelo esgotamento de algum recurso. Use RESOURCE_EXHAUSTED para esses erros. Não use PERMISSION_DENIED se o autor da chamada não puder ser identificado. Em vez dele, use UNAUTHENTICATED para esses erros. Receber um código de erro PERMISSION_DENIED não significa que a solicitação é válida ou que a entidade solicitada existe ou atende a outras condições prévias. |
8 | RESOURCE_EXHAUSTED |
Houve o esgotamento de algum recurso, como uma cota por usuário. Também é possível que todo sistema de arquivos esteja sem espaço. |
9 | FAILED_PRECONDITION |
A operação foi rejeitada porque o estado do sistema não é o necessário para a execução dela. Por exemplo, o diretório que vai ser excluído não está vazio ou uma operação rmdir foi aplicada a outro diretório. |
10 | ABORTED |
A operação foi cancelada, normalmente devido a um problema de simultaneidade, como falha na verificação do sequenciador ou cancelamento da transação. |
11 | OUT_OF_RANGE |
Houve uma tentativa da operação depois do intervalo válido. |
12 | UNIMPLEMENTED |
A operação não foi implementada ou não é compatível nem está ativada neste serviço. |
13 | INTERNAL |
Erros internos. Significa que algumas invariantes esperadas pelo sistema subjacente foram corrompidas. Este código é reservado para erros graves. |
14 | UNAVAILABLE |
O serviço não está disponível no momento. Muito provavelmente, essa é uma condição temporária que pode ser corrigida se for repetida com uma espera. |
15 | DATA_LOSS |
Perda ou corrupção irrecuperável de dados. |
16 | UNAUTHENTICATED |
A solicitação não tem credenciais válidas de autenticação para a operação. |
Às vezes, vários códigos de erros podem ser aplicados. Os serviços retornam o código de erro mais específico. Por exemplo, dê preferência a
OUT_OF_RANGE
em vez de FAILED_PRECONDITION
se os dois códigos forem válidos.
Da mesma forma, prefira NOT_FOUND
ou ALREADY_EXISTS
em vez de FAILED_PRECONDITION
.
FAILED_PRECONDITION x ABORTED x UNAVAILABLE
Veja a seguir um teste que pode ajudar você a decidir entre
FAILED_PRECONDITION
, ABORTED
e UNAVAILABLE
:
- Use
UNAVAILABLE
se o cliente puder repetir apenas a chamada com falha. - Use
ABORTED
se o cliente precisar tentar novamente em um nível superior, como quando um teste e um conjunto especificado pelo cliente falhar, o que indica que o cliente precisa reiniciar uma sequência de leitura-modificação-gravação. - Use
FAILED_PRECONDITION
se o cliente não tentar novamente até que o estado do sistema seja explicitamente corrigido. Por exemplo, se um "rmdir" falhar porque o diretório não está vazio, é melhor retornarFAILED_PRECONDITION
, porque o cliente não precisa tentar novamente, a menos que os arquivos sejam excluídos do diretório.
INVALID_ARGUMENT x FAILED_PRECONDITION x OUT_OF_RANGE
Veja a seguir um teste que pode ajudar você a decidir entre
INVALID_ARGUMENT
, FAILED_PRECONDITION
e OUT_OF_RANGE
:
- Use
INVALID_ARGUMENT
se os argumentos forem problemáticos, independente do estado do sistema. Por exemplo: um URL incorreto - Use
OUT_OF_RANGE
se um valor estiver fora do intervalo devido ao estado do sistema. Por exemplo, start_date é anterior astart_date_restrict
. - Use
FAILED_PRECONDITION
se o valor for inválido devido ao estado do sistema, mas não for um valorOUT_OF_RANGE
.