> For the complete documentation index, see [llms.txt](https://elguerre.gitbook.io/de0an/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://elguerre.gitbook.io/de0an/capitulo-7-la-construccion.-accediendo-a-los-datos/tratamiento-de-errores-y-trazas.md).

# Tratamiento de Errores y Trazas

Como ya hemos visto, Aun disponiendo de herramientas para la detección y depuración de errores necesitaremos también, habilitar mayor detalle para el diagnóstico de errores y/o comportamientos no esperados. Un gestor de trazas es una herramienta a la que quizás estamos acostumbrados cuando desarrollamos en otras tecnologías. De igual forma y de manera muy sencilla, la crearemos cubriendo así dicha necesidad. El siguiente diagrama de clases representa al gestor de trazas (“TraceManager”) junto con su interfaz y el tipo de mensajes posibles.

![](https://240651724-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfrvHBNivOTy0fVKROgzo%2Fuploads%2Fgit-blob-f4ab4a2dc73dc723d32db54606c2f0fb607360e6%2Fimage22.PNG?alt=media)

**Figura 22.- Gestión de trazas**

El método principal lo describimos a continuación, el cual recibe como parámetros una cadena de texto indicando el origen donde se registra el mensaje, y el propio mensaje.

```csharp
public async void Trace(string source, string message)
{
    string messagePattern = null;
    string logMessage = null;
    string strLogDate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
    try
    {
        if (string.IsNullOrWhiteSpace(source))
        {
            messagePattern = "[{0} - {1}]\r\n{2}\r\n";
            logMessage = String.Format(messagePattern, strLogDate, this.messageType, message);
        }
        else
        {
            messagePattern = "[{0} - {1}]\r\n[{2}]\r\n{3}\r\n";
            logMessage = String.Format(messagePattern, strLogDate, this.messageType, source, message);
        }
        await storage.SaveAsync(logFileName, logMessage);
    }
    catch { /* Evitar cualquier excepción en las trazas */}
}
```
