> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestion des erreurs dans CloudScript

> Interceptez et examinez les erreurs PlayFab CloudScript à l'aide de blocs try/catch, extrayez les codes d'erreur d'API et surveillez les erreurs non gérées depuis le tableau de bord CloudScript.

Ce tutoriel explique comment reconnaître et gérer les erreurs dans vos gestionnaires CloudScript.

## Identification

La première étape consiste à identifier l'erreur. Bien que chaque erreur non interceptée soit journalisée et disponible dans la réponse renvoyée à l'appelant (client), vous pouvez intercepter l'erreur en amont à l'aide d'un bloc `try/catch`.

Considérez l'extrait CloudScript suivant, qui produit et intercepte l'erreur.

```javascript theme={null}
"use strict";

handlers.GenerateError = () => {
    try {
        server.GetPlayerStatistics({
            PlayFabId : "non-existing-player-id"
        });
    } catch (ex) {
        let error = ex.apiErrorInfo.apiError.error; // In this case - "InvalidParams"
        let errorCode = ex.apiErrorInfo.apiError.errorCode; // In this case : 1000
    }
}
```

Avez-vous remarqué comment les codes d'erreur ont été extraits dans le bloc catch ? Consultez notre [documentation sur les codes d'erreur globaux des méthodes d'API](/fr/services/playfab/api-references/global-api-method-error-codes) pour obtenir la liste complète des erreurs.

<Note>
  Le code d'erreur suffit à lui seul pour identifier l'erreur.
</Note>

## Journalisation

Toute erreur non gérée est ajoutée à la réponse, ce qui permet au client de traiter le problème.

Parallèlement, une entrée d'erreur CloudScript est créée et ajoutée aux statistiques totales disponibles dans votre tableau de bord CloudScript.

<img src="https://mintcdn.com/microsoft-4404708b/dqv53299jA1M-fNi/images/playfab/live-service-management/service-gateway/automation/cloudscript/tutorials/game-manager-cloudscript-dashboard.png?fit=max&auto=format&n=dqv53299jA1M-fNi&q=85&s=b223b50da990d93023537437490b0ed2" alt="Game Manager : tableau de bord CloudScript affichant un graphique des erreurs d'API" width="1366" height="771" data-path="images/playfab/live-service-management/service-gateway/automation/cloudscript/tutorials/game-manager-cloudscript-dashboard.png" />

Pour forcer la journalisation de l'exception sous forme de chaîne JSON, utilisez la journalisation des erreurs via l'objet `log`.

```javascript theme={null}
"use strict";

handlers.GenerateError = () => {
    try {
        server.GetPlayerStatistics({
            PlayFabId : "non-existing-player-id"
        });
    } catch (ex) {
        log.error(ex);
    }
}
```

Enfin, vous pouvez écrire des événements de titre/joueur pour un traitement ultérieur via l'analytique.

```javascript theme={null}
"use strict";

handlers.GenerateError = () => {
    try {
        server.GetPlayerStatistics({
            PlayFabId : "non-existing-player-id"
        });
    } catch (ex) {
        server.WriteTitleEvent({
            EventName : 'cs_error',
            Body : ex
        });
    }
}
```

## Récupération

Il n'est pas toujours possible de se remettre d'une erreur. Avec des problèmes tels que `InvalidArguments`, vous n'avez d'autre choix que de signaler le problème au joueur.

Il existe un sous-ensemble d'erreurs pour lesquelles une stratégie de nouvelle tentative peut être appliquée. Les types d'erreurs *pouvant faire l'objet d'une nouvelle tentative* sont décrits dans [Codes d'erreur globaux des méthodes d'API](/fr/services/playfab/api-references/global-api-method-error-codes).

Nous vous demandons de *vous assurer* de respecter les exigences suivantes lorsque vous appliquez une stratégie de nouvelle tentative :

* À chaque nouvelle tentative, le délai entre les tentatives doit *augmenter* de manière exponentielle. Cela augmente vos chances de réussite de l'appel et évite que votre jeu ne submerge le serveur PlayFab (ce qui entraînerait *davantage* d'appels rejetés).

* Vous devez appliquer cette stratégie de nouvelle tentative de manière *sélective*, uniquement pour les codes qui justifient une nouvelle tentative.

## Erreur de délai d'expiration de CloudScript

Le temps d'exécution des appels d'API CloudScript est limité à 4 secondes.

Si le temps d'exécution dépasse 4 secondes, une erreur `InternalServerError` est levée et l'événement PlayStream écrit un objet Logs semblable au suivant :

```
    "Logs":[
        {
        "Level":"Error",
        "Message":"PlayFab API request failure",
        "Data":{
            "request":{
                "PlayFabId":"9437A5ADDAE3012D"
            },
            "error":"Timeout",
            "api":"/Server/GetPlayerSegments"
        }
        }
    ]
```

Si vous rencontrez cette erreur, vous pouvez :

* diviser votre CloudScript en segments de code plus petits qui s'exécutent en moins de 4 secondes.
* Passer à [CloudScript avec Azure Functions](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart), dont les délais d'expiration sont plus longs dans certains cas. Vous pouvez consulter les limites dans le [guide de démarrage rapide](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart#execution-limits).


## Related topics

- [Documentation de la gestion des services en direct PlayFab](/fr/services/playfab/live-service-management/index.md)
- [Fonctionnalités ES6 dans CloudScript](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript/es6-features-in-cloudscript.md)
- [Utilisation des actions CloudScript avec PlayStream](/fr/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream.md)
- [Déboguer CloudScript avec Azure Functions dans Visual Studio](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/debugging-with-CloudScript-AF-VS.md)
- [Modèles de contexte de PlayFab CloudScript avec Azure Functions](/fr/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/CloudScript-af-context.md)
