Generación de una excepción

Si detecta un error u otra situación en el flujo de mensajes en el que desea que finalice el proceso de mensajes, puede generar una excepción en un flujo de mensajes de dos modos:

  1. Utilice la sentencia ESQL THROW EXCEPTION.

    Incluya la sentencia THROW en cualquier lugar del módulo ESQL para un nodo Compute, Database o Filter. Utilice las opciones de la sentencia para codificar sus propios datos e insertarlos en la excepción.

  2. Incluya un nodo THROW en el flujo de mensajes.

    Establezca las propiedades del nodo para identificar el origen y el contenido de la excepción.

Utilizando las opciones de la sentencia de las propiedades del nodo, puede especificar un identificador de mensajes y los valores que se insertarán en el texto del mensaje para proporcionar información e identificación adicionales a los usuarios que interpretan la excepción. Puede especificar cualquier mensaje en cualquier catálogo que esté disponible en el intermediario.

Las situaciones en las que puede desear generar una excepción las determina el comportamiento del flujo de mensajes. Cuando diseñe el flujo de mensajes decida dónde puede resultar adecuada esta acción. Por ejemplo, es posible que desee examinar el contenido del mensaje de entrada para asegurarse de que reúne el criterio que no puede detectar el nodo de entrada (que puede comprobar que se ha recibido un formato de mensaje determinado).

El ejemplo siguiente utiliza el mensaje de factura de ejemplo para mostrarle cómo puede utilizar la sentencia ESQL THROW. Si desea comprobar que el número de factura está dentro de un rango determinado, genere una excepción para cualquier mensaje de factura recibido que no esté dentro del rango válido.

--Comprobar el número de factura por debajo del rango permitido
IF Body.Invoice.InvoiceNo  < 100000 THEN
   THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES
   ('Número de factura muy bajo', Body.Invoice.InvoiceNo);

-- Comprobar el número de factura por encima del rango permitido
ELSEIF Body.InvoiceNo > 500000 THEN
      THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES
   ('Número de factura muy alto', Body.Invoice.InvoiceNo);

ELSE DO
  -- el número de factura está dentro del rango permitido
  -- completar el proceso normal
ENDIF;

Conceptos relacionados
Flujos de mensajes
Árbol ExceptionList
ESQL
Diseño de mensajes

Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Manejo de errores en flujos de mensajes
Gestión de archivos ESQL

Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Sentencia THROW