> For the complete documentation index, see [llms.txt](https://docs.skyone.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.skyone.cloud/espanol/skyone-studio/integraciones/flujos/gestion-de-los-flujos/flow-canva-configuracion-y-edicion-del-flujo/exception-handler/configuracion-del-exception-handler.md).

# Configuración del Exception Handler

Para configurar un **Exception Handler**, es necesario definirlo dentro de un flujo y aplicarlo a los módulos. También puede ser necesario configurar el servidor **syslog** y el correo electrónico de notificación.

***

### Cómo acceder

En la página de edición del flujo, selecciona el botón **"Exception Handlers"**.

<figure><img src="/files/lwlJMBKFKPhlT3zVIAFr" alt=""><figcaption></figcaption></figure>

#### Objetivos

Configurar el manejo de excepciones para un módulo REST.

* [**\[ Paso 01 \]** Crear el Exception Handler para el tratamiento de errores HTTP](#paso-01-crear-el-exception-handler-para-el-tratamiento-de-errores-http)
* [**\[ Paso 02 \]** Crear el Exception Handler para el tratamiento de errores Genéricos](#paso-02-crear-el-exception-handler-para-el-tratamiento-de-errores-genericos)
* [**\[ Paso 03 \]** Aplicar los Exception Handlers en el Módulo](#paso-03-aplicar-los-exception-handlers-en-el-modulo)
* [**\[ Paso 04 \]** Configurar el servidor de syslog](#paso-04-configurar-las-notificaciones-syslog-y-correo-electronico-del-exception-handler)
* [**\[ Paso 05 \]** Ejecutar el flujo](#paso-05-ejecutar-el-flujo)

**Passo a Passo**

#### <mark style="color:$primary;">**Paso 01: Crear el Exception Handler para el tratamiento de errores HTTP**</mark>

1. Haz clic en **"Agregar Exception Handler"**.

<figure><img src="/files/vZGT2jnfGMv6bPtxqEOu" alt=""><figcaption></figcaption></figure>

En la pantalla que se presenta:

* Define un nombre para tu Exception Handler, por ejemplo: **HTTP Handler**. Este nombre será visible en la configuración del módulo.
* Crea una descripción sobre este Exception Handler.
* Define el **alcance de disponibilidad** de tu EH:
  * **Flujo**: visible y disponible solo en el flow que estás editando.
  * **Integración**: visible y disponible para todos los flows de la integración que estás editando.
  * **Espacio**: disponible para cualquier flujo de cualquier integración de tu espacio.
* Haz clic en **"Agregar regla"** para crear una nueva Regla del Handler.

<figure><img src="/files/NiIAclsxT2dFUY0Zgg34" alt=""><figcaption></figcaption></figure>

Después de hacer clic en **"Agregar regla"**, se abrirá la segunda parte de las configuraciones:

<figure><img src="/files/b1wtIUs7rZd1Q2VWCq1E" alt=""><figcaption></figcaption></figure>

* Define un nombre para tu **Regla del Handler**, por ejemplo: *Client/Server Error Responses*.
* Define los **reintentos** en **1**. El objetivo es permitir que Skyone Studio intente la llamada una vez más, eliminando posibles errores puntuales de comunicación.
* Define el **tiempo de espera**.
* Define la **expresión regular** que identifica cualquier error de cliente o servidor HTTP.\
  Para ello, usamos una expresión regular que encuentra cualquier secuencia de 3 dígitos que comience con 4 o 5. Observa que todos los caracteres son importantes para el funcionamiento de una expresión regular, incluidos los espacios.

```
“status”: [45]\d\d
```

{% hint style="info" %}
Puedes encontrar validadores de expresiones regulares en Internet, por ejemplo: <https://regex101.com/>
{% endhint %}

* Selecciona las **notificaciones** que esta ER generará, por ejemplo: **Syslog** y **Local**.
* Define el **mensaje** generado en esas notificaciones, por ejemplo: *HTTP Error 400/500*. Este mensaje podrá ser filtrado en el syslog o en los logs locales.

Esta **Regla del Handler** puede resumirse en el siguiente cuadro:

| Nombre                        | Reintento | Tiempo de espera | REGEX               | ANY | Notificación              | Mensaje            | ¿Enviar Parámetros? |
| ----------------------------- | --------- | ---------------- | ------------------- | --- | ------------------------- | ------------------ | ------------------- |
| Client/Server Error Responses | 1         | 0                | `“status”: [45]\d\` |     | <p>syslog</p><p>local</p> | HTTP Error 400/500 |                     |

#### **Regla por defecto del Handler**

* Define las notificaciones que serán generadas, por ejemplo **syslog** y **Local**.
* Define el mensaje de notificación, por ejemplo: **HTTP FATAL ERROR**.
* Selecciona **¿Enviar parámetros en el mensaje?** Esta opción incluirá en la notificación toda la información de contexto de la llamada, permitiendo identificar exactamente los parámetros utilizados.
* Elige la **Acción final** (Continuar, Continuar loop o Detener).
* Haz clic en **"Guardar"** para finalizar la configuración.

***

#### **Paso 02: Crear el Exception Handler para el tratamiento de errores Genéricos**

Muchos errores son imprevisibles. Podemos definir un **EH** para tratarlos de forma estandarizada.

* Crea un nuevo EH con el nombre **Generic** con alcance de **Integración**.
* Agrega la siguiente **Regla del Handler**:

| Name    | Retrices | Delay | REGEX | ANY | Notificação               | Message       | Send Params |
| ------- | -------- | ----- | ----- | --- | ------------------------- | ------------- | ----------- |
| Generic | 1        | 0     |       |     | <p>syslog</p><p>local</p> | UNKNOWN ERROR |             |

Observa que seleccionamos el campo **ANY**. Con esta opción, cualquier excepción será manejada por esta regla. Típicamente, esta opción se aplica solo una vez al final de una secuencia de EH para tratar todos los errores que no fueron específicamente definidos anteriormente.

* Configura la **Regla por defecto del Handler**.
* Selecciona **Syslog** y **Local** como mecanismos de notificación.
* Selecciona **¿Enviar parámetros en el mensaje?** Esta opción nos permitirá investigar los detalles del error desconocido que generó la excepción.
* Selecciona la **acción final** como **Detener**. De esta manera, el flujo se interrumpirá, ya que estamos manejando un error grave para el cual nuestro flujo no está preparado.
* Haz clic en **"Guardar"** para finalizar la configuración.

<figure><img src="/files/AxaupqGj0qzkbpL4FbK9" alt=""><figcaption></figcaption></figure>

#### **Paso 03: Aplicar los Exception Handlers en el Módulo**

Ingresa al modo de edición del módulo que recibirá los **Exception Handlers**.\
Observa que ambos EH creados están disponibles para su aplicación en el módulo.

<figure><img src="/files/KeFlKiwdiPx9CuSFSrSE" alt=""><figcaption></figcaption></figure>

* Primero selecciona **HTTP Handler** y luego selecciona **Generic**.
* Observa que se insertan en el campo de **Handlers seleccionados** en el orden en que fueron seleccionados. Este orden también determina la secuencia en la que se evaluarán las excepciones, por lo que es fundamental para el correcto funcionamiento de la pila de EH.<br>

<figure><img src="/files/Q8dpanSDGzVX4sZ5Y5KY" alt=""><figcaption></figcaption></figure>

#### **Paso 04: Configurar las notificaciones syslog y correo electrónico del Exception Handler**

Al crear una regla en el **Exception Handler**, es posible elegir qué mensajes recibirás.\
Sin embargo, solo seleccionar el tipo de mensaje no es suficiente para garantizar la recepción de la notificación.

Para recibir todas las notificaciones, sigue estos pasos:

1. Accede a **"Configuraciones"** en el área de edición del flujo.
2. Haz clic en la pestaña **"Alertas"**.
3. En **"Configuraciones de logs"**, ingresa la dirección del servidor **syslog** y/o las direcciones de correo electrónico que deben recibir las notificaciones.
4. Finalmente, haz clic en **"Guardar cambios"**.

{% hint style="warning" %}
Es fundamental que la opción **“Flujos”** esté activada en **“Notificaciones de elementos”**.\
Consulta el artículo **"**[**Notificaciones**](/espanol/skyone-studio/vision-general/configuraciones-y-preferencias/notificaciones.md)**"** para más detalles.
{% endhint %}

<figure><img src="/files/6CLfgCSehfXqocvAPR4z" alt=""><figcaption></figcaption></figure>

***

#### **Paso 05: Ejecutar el flujo**

1. Ejecuta este flujo contra algún servicio programado para responder con un código de error (por ejemplo **400**) o provoca el error mediante algún parámetro configurado incorrectamente.
2. Observa que el flujo finaliza con éxito a pesar de la excepción, ya que fue manejada con la acción **Continuar**.
3. Nota que los mensajes de log generados localmente indican que el **EH HTTP Handler** fue responsable del manejo de la excepción.
4. Se generaron dos llamadas: una reintento con sus respectivas notificaciones. La tercera notificación de error fue generada por la **Regla por defecto del Handler** e incluye los detalles de la llamada que causó la excepción.

Adicionalmente, puedes ejecutar este flujo contra un servicio que esté **indisponible**.

* En este caso no se recibirá un código HTTP, sino algún otro tipo de error.
* El ejemplo siguiente fue generado contra un servidor con el servicio deshabilitado.
* Observa el error de **Conexión Rechazada** en el mensaje detallado.
* El manejo de este error fue ejecutado por el **EH Generic**.
* El flujo se interrumpió generando un **ERROR**, conforme fue programado en el Handler mediante la acción **Detener** de la **Regla por defecto del Handler**.

***

#### **Próximos pasos**

* Casos de uso del [**Exception Handler**](/espanol/skyone-studio/integraciones/flujos/gestion-de-los-flujos/flow-canva-configuracion-y-edicion-del-flujo/exception-handler/casos-del-exception-handler.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.skyone.cloud/espanol/skyone-studio/integraciones/flujos/gestion-de-los-flujos/flow-canva-configuracion-y-edicion-del-flujo/exception-handler/configuracion-del-exception-handler.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
