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

# Control de errores de PlayFab

> Controle los errores sincrónicos, asincrónicos, de token, de limitación y de red devueltos por el SDK de C/C++ de PlayFab Services, con los códigos HRESULT comunes.

Existen varios puntos diferentes en los que puede producirse un error en una llamada de API asincrónica del SDK de PlayFab Services. El control de estos errores difiere en función de cómo y cuándo se produce el error en la operación.

Al igual que la mayoría de las llamadas asincrónicas del GDK, las API de PlayFab siguen el mismo patrón general de llamada:

1. Llamada a **PF\*Async(...)**, que inicia una operación asincrónica.
2. (Opcional) Llamada a **XAsyncGetStatus(...)** para realizar un seguimiento del estado de la operación asincrónica. Puede usarse para esperar la finalización de la operación asincrónica.
3. **PF\*GetResultSize(...)** para recuperar el tamaño en bytes de la carga del resultado.
4. **PF\*GetResult(...)** para recuperar el resultado de la operación asincrónica.

Cada una de estas llamadas puede producir un error por diferentes motivos. En las secciones siguientes se detallan los tipos de errores más comunes.

## Errores sincrónicos

Un error sincrónico se produce cuando la llamada inicial a **PF\*Async** devuelve un error. Este tipo de error suele indicar un error de programación: un patrón de llamada no válido, argumentos no válidos, etc. Estos tipos de errores deben resolverse durante el desarrollo. La mayoría de los demás errores sincrónicos son irrecuperables y no pueden controlarse fácilmente (por ejemplo, E\_OUTOFMEMORY).

## Errores asincrónicos

Un error asincrónico se produce cuando falla cualquiera de las llamadas **XAsyncGetStatus**, **PF\*GetResultSize** o **PF\*GetResult**. El rango de errores asincrónicos es más amplio. Además de los errores debidos a argumentos no válidos, los errores asincrónicos se dividen en varias categorías que se describen con más detalle en las secciones siguientes.

### Errores de validación de tokens

Antes de iniciar una llamada al servicio de PlayFab, el SDK realiza una validación del lado cliente para asegurarse de que el token de autenticación requerido está disponible y sigue siendo válido. Si esta comprobación falla, se devuelve uno de los errores siguientes:

* `E_PF_NOENTITYTOKEN (0x89235411)`:
  Indica que el EntityToken asociado al PFEntityHandle proporcionado ha expirado. Consulte [Control de la expiración de tokens](/services/playfab/sdks/c/relogin) para obtener más información sobre cómo controlar esta situación.

* `E_PF_NOSECRETKEY (0x89235412)`
  Indica que el PFEntityHandle proporcionado no tiene una SecretKey asociada. La falta de una SecretKey suele significar que ha intentado realizar una solicitud con un tipo de entidad no válido. Solo las entidades de título pueden llamar a las API que requieren una SecretKey. Tenga en cuenta que las API de SecretKey están orientadas a escenarios de servidor o administración y no están disponibles en el GDK.

### Errores del servicio de PlayFab

Si el SDK realiza correctamente la solicitud al servicio de PlayFab, el servicio aún puede devolver un error. Hay dos tipos generales de errores del servicio de PlayFab: los *globales*, que puede devolver cualquier API de PlayFab, y los *específicos*, que son propios de cada API. A continuación se muestra la lista completa de errores *globales*:

* `E_PF_API_CLIENT_REQUEST_RATE_LIMIT_EXCEEDED (0x892354dd)`
* `E_PF_API_CONCURRENT_REQUEST_LIMIT_EXCEEDED (0x8923556b)`
* `E_PF_CONCURRENT_EDIT_ERROR (0x8923549b)`
* `E_PF_DATA_UPDATE_RATE_EXCEEDED (0x89235534)`
* `E_PF_DOWNSTREAM_SERVICE_UNAVAILABLE (0x89235495)`
* `E_PF_INVALID_API_ENDPOINT (0x89235499)`
* `E_PF_OVER_LIMIT (0x892354ec)`
* `E_PF_SERVICE_UNAVAILABLE (0x89235491)`
* `E_PF_ACCOUNT_BANNED (0x89235423)`
* `E_PF_ACCOUNT_DELETED (0x89235557)`
* `E_PF_ACCOUNT_NOT_FOUND (0x89235422)`
* `E_PF_API_REQUESTS_DISABLED_FOR_TITLE (0x8923553c)`
* `E_PF_INVALID_CONTENT_TYPE (0x892354a6)`
* `E_PF_INVALID_ENTITY_TYPE (0x8923558a)`:
* `E_PF_INVALID_PARAMS (0x89235421)`
* `E_PF_INVALID_REQUEST (0x89235468)`
* `E_PF_INVALID_TITLE_ID (0x89235425)`
* `E_PF_NOT_AUTHENTICATED (0x8923546b)`
* `E_PF_NOT_AUTHORIZED (0x89235478)`
* `E_PF_NOT_AUTHORIZED_BY_TITLE (0x892354d5)`
* `E_PF_PROFILE_DOES_NOT_EXIST (0x8923553f)`
* `E_PF_TITLE_DELETED (0x89235570)`
* `E_PF_UNKNOWN_ERROR (0x89235448)`

Para obtener más información sobre las instrucciones de reintento ante errores del servicio, consulte [Códigos de error globales de los métodos de API del servicio de PlayFab](/services/playfab/api-references/global-api-method-error-codes).

#### Errores de limitación

Una categoría de errores del servicio son los errores de limitación, indicados por un código de estado HTTP 429. Cuando el servicio de PlayFab devuelve un error de limitación, significa que el cliente está llamando a un punto de conexión con demasiada frecuencia durante un período de tiempo específico. Cuando el SDK recibe un error de limitación, reintenta automáticamente la solicitud tras una pequeña espera. Si la solicitud sigue sin completarse correctamente dentro de la ventana de reintentos configurada, el error se transmite al título. La configuración de reintentos del SDK se puede establecer llamando a **PFSetHttpRetrySettings**.

### Errores de red

Si la pila de red subyacente devuelve un error, ese error se transmite al cliente. Puede producirse una amplia variedad de errores en función del error de red. La mayoría de los errores de red dan como resultado `E_HC_NO_NETWORK (0x89235006)`.

## Detalles adicionales de errores y seguimiento

Además del HRESULT, el servicio de PlayFab a veces devuelve una cadena *errorDetails*. Esta cadena no se expone a los clientes finales, pero puede resultar útil durante el desarrollo y la depuración. Para aprender a habilitar el seguimiento detallado y ver la cadena *errorDetails* devuelta, consulte la [Guía de seguimiento](/services/playfab/sdks/c/tracing).".

## Referencia

\[Control de errores en Microsoft Game Development Kit]\[/gaming/gdk/\_content/gc/system/overviews/error-handling]


## 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 de control de errores del SDK](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript/sdk-error-handling-best-practices.md)
- [Control de errores en CloudScript](/es/services/playfab/live-service-management/service-gateway/automation/cloudscript/handling-errors-in-cloudscript.md)
- [Tipos de control de errores](/es/services/xbox-services/develop/error-handling/live-types-of-error-handling.md)
