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
UNAVAILABLEse o cliente puder repetir apenas a chamada com falha. - Use
ABORTEDse 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_PRECONDITIONse 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_ARGUMENTse os argumentos tiverem erros, seja qual for o estado do sistema. Por exemplo, um URL incorreto - Use
OUT_OF_RANGEse um valor estiver fora do intervalo devido ao estado do sistema. Por exemplo, a start_date é anterior astart_date_restrict. - Use
FAILED_PRECONDITIONse o valor for inválido devido ao estado do sistema, mas não for um valorOUT_OF_RANGE.