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:
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.
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;