Lançando uma Exceção

Se você detectar um erro ou outra situação em seu fluxo de mensagens no qual deseja que o processamento de mensagens seja terminado, poderá emitir uma exceção em um fluxo de mensagens de duas maneiras:

  1. Utilize a instrução ESQL THROW EXCEPTION.

    Inclua a instrução THROW em qualquer local no módulo ESQL para um nó Compute, Database ou Filter. Utilize as opções na instrução para codificar seus próprios dados para serem inseridos na exceção.

  2. Inclua um nó THROW em seu fluxo de mensagens.

    Defina as propriedades do nó para identificar a origem e o conteúdo da exceção.

Utilizando as opções de instrução ou propriedades do nó, você pode especificar um identificador de mensagem e valores que são inseridos no texto da mensagem para fornecer informações adicionais e identificação para usuários que interpretam a exceção. Você pode especificar qualquer mensagem em qualquer catálogo que esteja disponível para o intermediário. Consulte a seção Utilizando Registro de Eventos a partir de uma Extensão Definida pelo Usuário para obter informações adicionais.

As situações nas quais talvez você queira emitir uma exceção são determinadas pelo comportamento do fluxo de mensagens e é necessário decidir quando projetar o fluxo de mensagens, no qual esta ação pode ser apropriada. Por exemplo, talvez você queira examinar o conteúdo da mensagem de entrada para assegurar-se de que ele atenda critérios específicos que não podem ser detectados pelo nó de entrada (que pode verificar se um determinado formato de mensagem é recebido).

O exemplo abaixo utiliza a mensagem de exemplo Invoice para mostrar como você pode utilizar a instrução ESQL THROW. Se desejar verificar se o número da fatura está em um determinado intervalo, você pode emitir uma exceção para qualquer mensagem de fatura recebida que não esteja no intervalo válido.

--Check for invoice number lower than permitted range
IF Body.Invoice.InvoiceNo  < 100000 THEN
      THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES
      ('Invoice number too low', Body.Invoice.InvoiceNo);

-- Check for invoice number higher than permitted range
ELSEIF Body.InvoiceNo > 500000 THEN
            THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1235 VALUES
      ('Invoice number too high', Body.Invoice.InvoiceNo);

ELSE DO
    -- invoice number is within permitted range
    -- complete normal processing
ENDIF;
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Estrutura em Árvore ExceptionList
Visão Geral do ESQL
Modelagem de Mensagens
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Tratando Erros em Fluxos de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Nó Compute
Nó Database
Nó Filter
Referência de ESQL
Instrução THROW
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ac17150_