Generar una excepción

Si detecta un error u otra situación en el flujo de mensajes en el que desea que termine el proceso de mensajes, puede generar una excepción en el 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 en la sentencia para codificar los datos propios que se deben insertar en la excepción.

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

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

Mediante la utilización de opciones de sentencia o de propiedades de nodo, puede especificar un identificador de mensaje y los valores que se insertan en el texto de mensaje para proporcionar información adicional e identificación a los usuarios que interpretan la excepción. Puede especificar cualquier mensaje en cualquier catálogo que esté disponible para el intermediario. Consulte Utilización del registro de sucesos desde una extensión definida por el usuario para obtener más información.

Las situaciones en las que es aconsejable generar una excepción las determina el comportamiento del flujo de mensajes; cuando diseñe el flujo de mensajes decida dónde puede ser apropiada esta acción. Por ejemplo, es aconsejable que examine el contenido del mensaje de entrada para asegurarse de que satisface criterios que el nodo de entrada no puede detectar (que puede que comprueben que se recibe un formato de mensaje determinado).

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

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

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

ELSE DO
  -- el número de factura está en el rango permitido
  -- completar el proceso normal
ENDIF;
Conceptos relacionados
Visión general de flujos de mensajes
Estructura del árbol Lista de excepciones
Visión general de ESQL
Modelado de mensajes
Tareas relacionadas
Diseñar un flujo de mensajes
Definir el contenido del flujo de mensajes
Manejar errores en flujos de mensajes
Gestión de archivos ESQL
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
Referencia de ESQL
Sentencia THROW
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac17150_