Gérer les erreurs du SDK client
Le SDK client envoie les erreurs de mise à jour du trajet à l'application consommateur à l'aide d'un mécanisme de rappel. Le paramètre de rappel est un type renvoyé spécifique à la plate-forme (TripUpdateError
sur Android et NSError
sur iOS).
Extraire les codes d'état
Les erreurs transmises au rappel sont généralement des erreurs gRPC. Vous pouvez également en extraire des informations supplémentaires sous la forme d'un code d'état. Pour obtenir la liste complète des codes d'état, consultez la section Codes d'état et leur utilisation dans gRPC.
Java
Vous pouvez extraire un code d'état gRPC qui fournit des détails sur l'erreur à partir du TripUpdateError
renvoyé par onTripUpdateError()
.
// Called when there is a trip update error.
@Override
public void onTripUpdateError(TripInfo tripInfo, TripUpdateError error) {
Status.Code code = error.getStatusCode();
}
Kotlin
Vous pouvez extraire un code d'état gRPC qui fournit des détails sur l'erreur à partir du TripUpdateError
renvoyé par onTripUpdateError()
.
// Called when there is a trip update error.
override fun onTripUpdateError(tripInfo: TripInfo, error: TripUpdateError) {
val code = error.getStatusCode()
}
Swift
Le NSError
est rappelé dans tripModel(_:didFailUpdateTripWithError:)
.
// Called when there is a trip update error.
func tripModel(_ tripModel: GMTCTripModel, didFailUpdateTripWithError error: Error?) {
// Check to see if the error comes from gRPC.
if let error = error as NSError?, error.domain == "io.grpc" {
let gRPCErrorCode = error.code
...
}
}
Objective-C
Le NSError
est rappelé dans tripModel:didFailUpdateTripWithError:
.
// Called when there is a trip update error.
- (void)tripModel:(GMTCTripModel *)tripModel didFailUpdateTripWithError:(NSError *)error {
// Check to see if the error comes from gRPC.
if ([error.domain isEqualToString:@"io.grpc"]) {
NSInteger gRPCErrorCode = error.code;
...
}
}
Interpréter les codes d'état
Les codes d'état couvrent deux types d'erreurs: les erreurs liées au serveur et au réseau, et les erreurs côté client.
Erreurs de serveur et de réseau
Les codes d'état suivants concernent des erreurs de réseau ou de serveur. Aucune action n'est requise de votre part pour les résoudre. Le SDK grand public les récupère automatiquement.
Status Code | Description |
---|---|
ABORTED | Le serveur a arrêté d'envoyer la réponse. Cela est généralement dû à un problème de serveur. |
CANCELLED | Le serveur a interrompu la réponse sortante. Cela se produit normalement lorsque l'application est envoyée en arrière-plan ou en cas de changement d'état dans l'application consommateur . |
INTERRUPTED | |
DEADLINE_EXCEEDED | Le serveur a mis trop de temps à répondre. |
UNAVAILABLE | Le serveur était indisponible. Cela est généralement dû à un problème réseau. |
Erreurs client
Les codes d'état suivants concernent les erreurs client. Vous devez prendre des mesures pour les résoudre. Le SDK grand public continue de réessayer d'actualiser le trajet jusqu'à ce que vous mettiez fin au partage du trajet, mais il ne récupérera pas tant que vous n'aurez pas pris les mesures nécessaires.
Status Code | Description |
---|---|
INVALID_ARGUMENT | L'application grand public a spécifié un nom de trajet non valide. Le nom du trajet doit respecter le format providers/{provider_id}/trips/{trip_id} .
|
NOT_FOUND | Le voyage n'a jamais été créé. |
PERMISSION_DENIED | L'application grand public ne dispose pas des autorisations nécessaires. Cette erreur se produit dans les cas suivants :
|
RESOURCE_EXHAUSTED | Le quota de ressources est égal à zéro, ou le débit du trafic dépasse la limite de vitesse. |
UNAUTHENTICATED | L'authentification de la requête a échoué en raison d'un jeton JWT non valide. Cette erreur se produit soit lorsque le jeton JWT est signé sans ID de trajet, soit lorsque le jeton JWT a expiré. |