Do Try, Do Catch e Do Finally
Caso alguma configuração do EIP não esteja disponível no formulário, você pode ajustá-la diretamente no arquivo main.yaml. Para isso, acesse a aba Source Code e edite o código da integração.
 | 
O EIP doTry permite criar fluxos de integração envolvendo um processo em um bloco "Try". Ele cria ramificações doCatch e doFinally para tratar exceções específicas e garantir que certas ações sejam executadas no final, independentemente de erros. Com isso, falhas podem ser tratadas de forma controlada, garantindo que a execução do fluxo continue sem interrupções desnecessárias.
Configurando o EIP doTry no Diagram
Para configurar um doTry em uma integração na aba Diagram, siga estes passos:
- 
Clique em +Add Step no canvas.
 - 
Selecione a aba EIPs.
 - 
Selecione o EIP doTry. Você pode usar a ferramenta de buscas para localizá-lo.
 - 
Ao adicionar o EIP ao canvas, três ramificações serão criadas automaticamente:
- 
Step vazio: clicando em Add Step, você adiciona o EIP ou componente que dará continuidade ao fluxo. Apenas uma ramificação deste tipo é permitida no bloco "Try".
 - 
doCatch: captura e trata exceções específicas que possam acontecer dentro do bloco "Try". Se houver vários blocos "doCatch", ele executa a exceção que for capturada primeiro.
- 
Você pode inserir uma ou mais exceções no campo Exception.
 
 - 
 - 
doFinally: este bloco é sempre executado, independentemente de ter acontecido exceção ou não (até mesmo se não houver bloco doCatch). A ramificação "doFinally" será sempre a última à direita. Apenas uma ramificação "doFinally" é permitida para cada EIP doTry.
 
 - 
 
| Você pode adicionar outras ramificações do tipo "doCatch", clicando em "+" e depois em Add Handling Step. | 
Exclusão do EIP doTry e suas ramificações
Há três cenários de exclusões do EIP doTry e suas ramificações:
- 
Ao excluir um bloco "doCatch", todos os steps dessa ramificação serão removidos.
 - 
Ao excluir um bloco "doFinally", todos os steps dessa ramificação serão removidos.
 - 
Ao excluir um EIP doTry, todos os blocos e steps subsequentes serão removidos.
 
Exemplo

- 
O fluxo começa com um timer, que é disparado a cada 60 segundos para consultar pedidos de um ERP.
 - 
O fluxo tenta acessar o ERP para obter os pedidos e processá-los com o doTry. O pedido é então enviado diretamente para o sistema financeiro e o status é atualizado no ERP.
 - 
Se houver erros de conexão, como ConnectException ou SocketTimeoutException, esses erros serão capturados com o doCatch, logados e uma notificação será enviada para a equipe de TI.
 - 
Independentemente de o fluxo ter sido bem-sucedido ou ter falhado, o processo de integração será finalizado com o registro de uma auditoria e a geração de um log com o doFinally.
 
Confira o exemplo em formato de código:
- from:
    uri: timer:ConsultOrder
    parameters:
      period: 60000
    steps:
      - doTry:
          id: doTry
          steps:
          - to: "http://erp.example.com/api/orders"
          - log:
              message: "Orders received: ${body}"
          - setBody:
              simple: "Processed orders: ${body}"
          - to: direct:sendToFinance
          - to: direct:updateERPStatus
          doCatch:
            - id: doCatch
              exception:
                 - java.net.ConnectException
                 - java.net.SocketTimeoutException
              steps:
                - log:
                    message: "Failed to access ERP: ${exception.message}"
                    loggingLevel: ERROR
                - to: direct:notifyError
          doFinally:
            id: doFinally
            steps:
              - log:
                  message: "Finalizing integration process - auditing"
              - to: direct:registerAudit
Share your suggestions with us!
          Click here and then [+ Submit idea]