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, esse 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 nesse espaço de endereço. Além disso, os erros gerados por APIs que não retornam informações de erro suficientes podem ser convertidos neste erro. |
3 | INVALID_ARGUMENT |
O cliente especificou um argumento inválido. |
4 | DEADLINE_EXCEEDED |
O prazo expirou antes que a operação fosse concluída. Para operações que alteram o estado do sistema, esse erro pode ser retornado mesmo que a operação tenha sido concluída com sucesso. Por exemplo, uma resposta bem-sucedida de um servidor que foi atrasada tempo suficiente para que o prazo expirasse. |
5 | NOT_FOUND |
Alguma entidade solicitada não foi encontrada. |
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 disso, use UNAUTHENTICATED para esses erros. Receber um código de erro PERMISSION_DENIED não implica que a solicitação seja válida nem que a entidade solicitada exista ou satisfaç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 a ser excluído não está vazio ou uma operação rmdir foi aplicada a um elemento que não é um 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, trata-se de uma condição temporária que pode ser corrigida se for tentada novamente com uma retirada. |
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 ambos os códigos se aplicarem.
Da mesma forma, dê preferência a NOT_FOUND
ou ALREADY_EXISTS
em vez de FAILED_PRECONDITION
.
FAILED_PRECONDITION x ABORTED x UNAVAILABLE
Confira abaixo um teste definitivo 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 mais alto, como quando um teste e um conjunto especificados pelo cliente falham, indicando que o cliente precisa reiniciar uma sequência de leitura, modificação e gravação. - Use
FAILED_PRECONDITION
se o cliente não tentar novamente até que o estado do sistema seja 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
Confira abaixo um teste definitivo que pode ajudar você a decidir entre
INVALID_ARGUMENT
, FAILED_PRECONDITION
e OUT_OF_RANGE
:
- Use
INVALID_ARGUMENT
se os argumentos tiverem erros, seja qual for o 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, a 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
.