> ## 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.

# Procedimientos recomendados de control de errores del SDK

> Procedimientos recomendados para detectar, inspeccionar y controlar los errores de la API de PlayFab devueltos por los SDK de administración, de servidor y de cliente en distintos lenguajes.

Este tutorial muestra cómo acceder a los errores de la API, reconocerlos y controlarlos mediante el SDK de PlayFab.

Las prácticas descritas aquí son igualmente aplicables a los SDK de administración, de servidor y de cliente, pero los patrones dependen *en gran medida* del lenguaje de su elección.

En pocas palabras, el patrón que elija será válido para cualquier SDK (administración/servidor/cliente), pero los detalles de implementación serán específicos de *su* lenguaje de programación y entorno.

## Captura y acceso al error

Los SDK de PlayFab suelen notificar los errores devolviendo un objeto de error. El siguiente fragmento de código muestra cómo detectar el error y acceder a él.

```csharp theme={null}
PlayFabClientAPI.LoginWithEmailAddress(new LoginWithEmailAddressRequest() {
    Email = "doesnotexist@mail.com",
    Password = "nevercorrect",
}, result => {
    // success
}, error => {
    // 'error' object is our point of access to error data
});
```

Por lo general, si un objeto de error está definido (no es nulo), indica que se ha producido un error. Entonces podemos inspeccionar el error con más detalle.

## Inspección del error

La forma más común de inspeccionar un error es reconocerlo mediante el código. Como se describe en [Códigos de error globales de los métodos de la API](/services/playfab/api-references/global-api-method-error-codes), cada error generado contiene códigos de error numéricos y legibles para el usuario.

<Note>
  El código *por sí solo* es suficiente para reconocer y procesar el error en consecuencia.
</Note>

Tomemos como ejemplo el método de API [LoginWithEmailAddress](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress). Como se indica en la [documentación](xref:titleid.playfabapi.com.client.authentication.loginwithemailaddress) de este método, los siguientes errores internos pueden producirse durante la ejecución:

* `InvalidTitleId 1004`
* `AccountNotFound 1001`
* `InvalidEmailOrPassword 1142`
* `RequestViewConstraintParamsNotAllowed 1303`

El siguiente método ilustra cómo inspeccionar y reconocer un error de este tipo.

```csharp theme={null}
PlayFabClientAPI.LoginWithEmailAddress(new LoginWithEmailAddressRequest() {
    Email = "doesnotexist@mail.com",
    Password = "nevercorrect",
}, result => {
    // success
}, error => {
    // General purpose logging: GenerateErrorReport gives a bunch of information about the error
    Debug.Log(error.GenerateErrorReport());

    // Recognize and handle the error
    switch (error.Error) {
        case PlayFabErrorCode.InvalidTitleId:
            // Handle invalid title id error
            break;
        case PlayFabErrorCode.AccountNotFound:
            // Handle account not found error
            break;
        case PlayFabErrorCode.InvalidEmailOrPassword:
            // Handle invalid email or password error
            break;
        case PlayFabErrorCode.RequestViewConstraintParamsNotAllowed:
            // Handle not allowed view params error
            break;
        default:
            // Handle unexpected error
            break;
    }
});
```

## Control del error

Una vez identificado el error, la estrategia de control o recuperación depende del tipo y la naturaleza del error. Los errores como *argumentos no válidos* nunca se resolverán con un reintento. La solicitud debe corregirse para que esa llamada API se realice correctamente.

Hay un subconjunto de errores en los que se puede aplicar una estrategia de reintento. Los tipos de error *reintentables* se describen en [Códigos de error globales de los métodos de la API](/services/playfab/api-references/global-api-method-error-codes).

Asegúrese de cumplir los siguientes requisitos al aplicar una estrategia de reintento:

* Con cada reintento, la demora entre reintentos debe *aumentar* exponencialmente. Esto *incrementa* sus posibilidades de realizar una llamada correcta y evita que su juego sature el servidor de PlayFab con llamadas repetidas (lo que dará lugar a *más* llamadas rechazadas).

* Debe aplicar esta estrategia de reintento de forma *selectiva*, usándola solo para aquellos códigos en los que valga la pena reintentar.

Consulte nuestro tutorial [Códigos de error globales de los métodos de la API](/services/playfab/api-references/global-api-method-error-codes) para obtener una lista de códigos que se pueden reintentar de forma segura.


## Related topics

- [Control de errores del marketplace](/es/services/playfab/economy-monetization/economy-v2/marketplace/marketplace-error-handling.md)
- [Control de errores del SDK de C++ de Lobby y Matchmaking](/es/services/playfab/multiplayer/lobby/lobby-and-matchmaking-client-sdk-errors.md)
- [Procedimientos recomendados para llamar a los servicios XBOX](/es/services/xbox-services/develop/best-practices/live-best-practices-calling-xbl.md)
- [Procedimientos recomendados de limitación](/es/services/playfab/live-service-management/service-gateway/throttling/best-practices.md)
- [Procedimientos recomendados para controlar el juego sin conexión](/es/services/xbox-services/develop/best-practices/live-best-practices-offline-play.md)
