Você pode projetar um fluxo de mensagens para capturar exceções antes que sejam retornados ao nó input. É possível incluir um ou mais nós TryCatch em um fluxo para fornecer um único ponto de falha para uma sequência de nós. Com essa técnica, você pode fornecer uma recuperação ou processamento de erros muito específico.
Um nó TryCatch não processa uma mensagem de nenhuma maneira, ele representa apenas um ponto de decisão em um fluxo de mensagens. Quando o nó TryCatch recebe uma mensagem, ele a propaga para o terminal Try. O intermediário analisa o controle para a seqüência de nós conectados a esse terminal (o fluxo de tentativas).
Se for emitida uma exceção no fluxo de tentativa, o broker retornará o controle ao nó TryCatch. O nó grava o conteúdo atual da árvore da lista de exceções no log de erros local, em seguida, grava as informações para a exceção atual na árvore da lista de exceções, sobrescrevendo as informações que estão armazenadas lá.
O nó propaga a mensagem para a sequência de nós conectados ao terminal Catch (o fluxo de captura). O conteúdo da árvore de mensagens que é propagado é idêntico ao conteúdo que foi propagado para o terminal de Tentativa, que é o conteúdo da árvore quando o nó TryCatch o recebeu pela primeira vez. O nó aprimora a árvore de mensagens com as novas informações da exceção que ele gravou na árvore da lista de exceções. Quaisquer modificações ou adições que os nós no fluxo de tentativa fizeram na árvore de mensagens não estão presentes na árvore de mensagens que é propagada ao fluxo de captura.
Entretanto, se o fluxo de tentativa tiver concluído o processamento que envolve atualizações nos bancos de dados externos, estas atualizações não serão perdidas; elas persistirão enquanto a mensagem for processada pelo fluxo de captura e a decisão sobre se as atualizações serão confirmadas ou retrocedidas será feita na configuração de seu fluxo de mensagens e nos nós individuais que interagem com os bancos de dados. Se as atualizações forem confirmadas devido à configuração que você definiu, você deverá incluir a lógica em seu fluxo de captura que retrocede as alterações que foram feitas.
Para rever as opções para configuração, consulte Configurando a Transacionalidade para os Fluxos de Mensagens.
O broker retorna o controle ao próximo ponto de captura no fluxo de mensagens (que pode ser outro nó TryCatch, mas é sempre, no último caso, o nó de entrada) se uma das seguintes condições for verdadeira:
O exemplo a seguir mostra como você pode configurar o fluxo para capturar exceções no nó de entrada. O terminal Catch do nó MQInput está conectado a um nó Trace para registrar o erro.
No exemplo a seguir, o fluxo de mensagens possui dois fluxos de processamento separados conectados aos terminais True e False do nó Filter. Aqui um nó TryCatch está incluído em cada uma das duas rotas que a mensagem pode percorrer. O terminal Catch dos nós TryCatch está conectado a um subfluxo de processamento de erros comum.
Se o nó de entrada em seu fluxo de mensagens não tiver um terminal Catch, e você desejar processar erros no fluxo, deverá incluir um nó TryCatch.