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 mais de uma exceção ocorra; se isso ocorrer, a árvore ExceptionList conterá uma subárvore para cada exceção.
Você pode acessar a árvore ExceptionList nos nós Compute, Banco de Dados e Filter e pode atualizá-la em um nó Compute. É necessário utilizar o nome de correlação apropriado; ExceptionList para um nó Banco de Dados 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 exemplo a seguir mostra um trecho do ESQL que foi codificado para um nó Compute para fazer o loop pela lista de exceção para a última descrição de 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;
Você só pode visualizar informações sobre amostras quando usa o centro de informações que está integrado ao WebSphere Message Broker Toolkit ou o centro de informações on-line. Você só poderá executar amostras quando usar o centro de informações que está integrado ao WebSphere Message Broker Toolkit.
Para obter informações sobre como acessar a árvore ExceptionList usando Java™, consulte Acessando o Uso da Árvore ExceptionList Java