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

# XErrorSetCallback

> XErrorSetCallback

# XErrorSetCallback

Specifies the callback that is called when an error occurs in the gaming OS or gaming runtime.

## Syntax

```cpp theme={null}
void XErrorSetCallback(  
         XErrorCallback* callback,  
         void* context  
)  
```

### Parameters

*callback*   \_In\_\
Type: XErrorCallback\*

Pointer to the game-defined callback to call. Passing in `nullptr` clears the callback.

*context*   \_In\_\
Type: void\*

Context pointer for the callback.

### Return value

Type: void

## Remarks

<Note>This function isn't safe to call on a time-sensitive thread. For more information, see [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

Use this function to specify the [XErrorCallback](/reference/system/xerror/functions/xerrorcallback) callback in your game that the system should call if an error occurs, and the [XErrorSetOptions](/reference/system/xerror/functions/xerrorsetoptions) function to specify how the game should behave when an error occurs in the gaming OS or gaming runtime.

The following example illustrates how to set error options, define a custom error callback, and set the custom error callback to receive error notifications by the system.

```cpp theme={null}
bool CustomGameXErrorCallback(_In_ HRESULT hr, _In_ const char* msg, _In_ void* context)  
{  
   // Capture the error to the game's custom logger  
   CustomGameLogger* logger = (CustomGameLogger*)context;  
   logger->ReportGameRuntimeIssue(hr, msg);  
  
   // Don't ignore the error. For example, continue on and do whatever  
   // is specified by XErrorSetOptions().  
   return true;  
}  
  
void SomeGameFunction()  
{  
   // Previously initialize the game's custom logger  
   // CustomGameLogger* m_logger = InitializeLogger();  
   // ...  
  
   // Setup how you want to handle XErrors  
   XErrorSetOptions(DebugBreakOnError, FailFastOnError);
   XErrorSetCallback(CustomGameXErrorCallback, m_logger);
}  
```

## Requirements

**Header:** XError.h

**Library:** xgameruntime.lib

**Supported platforms:** Windows, XBOX One family consoles and XBOX Series consoles

## Conceptual documentation

* [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## See also

[XError members](/reference/system/xerror/xerror_members)\
[XErrorCallback](/reference/system/xerror/functions/xerrorcallback)


## Related topics

- [XErrorCallback](/reference/system/xerror/functions/xerrorcallback.md)
- [XError members](/reference/system/xerror/xerror_members.md)
- [XErrorSetOptions](/reference/system/xerror/functions/xerrorsetoptions.md)
- [PFMultiplayerSetMemoryCallbacks](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmultiplayer/functions/pfmultiplayersetmemorycallbacks.md)
- [PartyManager::SetMemoryCallbacks](/services/playfab/multiplayer/networking/reference/classes/PartyManager/methods/partymanager_setmemorycallbacks.md)
