Acessando a Árvore Lista de Exceção

A árvore ExceptionList possui seu próprio nome de correlação, ExceptionList e é necessário utilizá-lo em todas as instruções ESQL que fazem referência ou definem o conteúdo dessa árvore.

Essa árvore é criada quando a árvore lógica é criada, quando uma mensagem de entrada é analisada. Ela está inicialmente vazia e será ocupada apenas se ocorrer uma exceção durante o processamento do fluxo de mensagens. É possível que possa ocorrer mais de uma exceção; se isso ocorrer, a árvore Lista de Exceção conterá uma subárvore para cada exceção.

Você pode acessar a árvore Lista de Exceção nos nós Compute, Database e Filter e pode atualizá-la em um nó Compute. Você deve utilizar o nome de correlação adequado; a Lista de Exceções de um nó Database ou Filter, e InputExceptionList para um nó Compute.

Talvez você queira acessar essa árvore em um nó em um procedimento de tratamento de erros. Por exemplo, talvez você queira rotear a mensagem para um caminho diferente, com base no tipo de exceção, por exemplo, uma que foi gerada explicitamente utilizando uma instrução ESQL THROW ou uma que foi gerada pelo intermediário.

O ESQL a seguir mostra como você pode acessar a Lista de Exceção e processar cada filho que ela contém:

-- Declare a reference for the ExceptionList
-- (em um nó Compute, utilize InputExceptionList)
DECLARE start REFERENCE TO ExceptionList.*[1];

-- Loop through the exception list children
WHILE start.Number IS NOT NULL DO
      -- more ESQL

   -- Move start to the last child of the field to which it currently points
      MOVE start LASTCHILD;
END WHILE;

O segundo exemplo a seguir mostra um extrato do ESQL codificado para um nó Compute para executar um loop através da lista de exceções para a descrição da última exceção (aninhada) e extrair o número do erro. Esse erro está relacionado à causa original do problema e normalmente fornece as informações mais precisas. A ação seguinte tomada pelo fluxo de mensagens pode ser resolvida pelo número do erro recuperado desta forma.

CREATE PROCEDURE getLastExceptionDetail(IN InputTree reference,OUT messageNumber integer,
OUT messageText char)
    /****************************************************************************
* A procedure that will get the details of the last exception from a message
* IN InputTree: The incoming exception list
* IN messageNumber: The last message numberr.
* IN messageText: The last message text.
	 *****************************************************************************/
     BEGIN
   -- Create a reference to the first child of the exception list
   declare ptrException reference to InputTree.*[1];
   -- keep looping while the moves to the child of exception list work
WHILE lastmove(ptrException) DO
-- store the current values for the error number and text
IF ptrException.Number is not null THEN
        SET messageNumber = ptrException.Number;
        SET messageText = ptrException.Text;
  END IF;
  -- now move to the last child which should be the next exceptionlist
move ptrException lastchild;
		END WHILE;
	END;

Para obter informações adicionais sobre a utilização de ExceptionList, consulte o subfluxo na amostra Rotina de Tratamento de Erros que inclui o ESQL que interroga a estrutura de ExceptionList e executa a ação específica, de acordo com seu conteúdo.

Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Estrutura em Árvore ExceptionList
Visão Geral do ESQL
Modelagem de Mensagens
Tarefas relacionadas
Tratando Erros em Fluxos de Mensagens
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Nó Compute
Estrutura da Lista de Exceções
Referência de ESQL
Instrução DECLARE
Instrução EVAL
Instrução WHILE
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac16830_