Tratamento de erros no Power Automate: passo a passo
Um fluxo do Power Automate que falha em silêncio é um problema à espera de acontecer: o processo pára a meio e ninguém dá conta até o cliente reclamar. Com o padrão Try-Catch, construído com ações Scope e a opção Configure run after, o fluxo passa a apanhar erros, a registá-los e a avisar-te de forma automática. Este guia mostra o tratamento de erros no Power Automate passo a passo, com um exemplo simples e reutilizável em qualquer projeto.
Pré-requisitos
- Uma conta com acesso ao Power Automate (plano Microsoft 365 ou versão de avaliação).
- Um fluxo de cloud (automatizado ou instantâneo) ao qual queiras adicionar tratamento de erros.
- Permissão para enviar um email pelo Outlook ou publicar no Microsoft Teams, para as notificações.
- Noções básicas do editor de fluxos e de como adicionar ações.
Passo 1: Agrupar a lógica principal num Scope
A ação Scope funciona como uma caixa que agrupa várias ações e as trata como um bloco único. Abre o teu fluxo no editor, adiciona uma ação Scope e muda-lhe o nome para "Try". Move para dentro dela todas as ações que fazem o trabalho real: ler dados, criar registos, enviar ficheiros. A vantagem é clara: se qualquer ação lá dentro falhar, o Scope inteiro fica marcado como falhado, dando-te um único ponto onde reagir em vez de tratares erro a erro.
Passo 2: Criar o Scope "Catch" para reagir a falhas
Adiciona um segundo Scope logo a seguir ao primeiro e chama-lhe "Catch". Por omissão, uma ação só corre quando a anterior tem sucesso — e nós queremos exatamente o contrário. Clica nos três pontos (...) do Scope "Catch", escolhe Configure run after e ativa as opções has failed, is skipped e has timed out, deixando has succeeded desmarcada. A partir daqui, o "Catch" só é executado quando o "Try" não termina bem.
Passo 3: Filtrar a ação que falhou
Dentro do "Catch", adiciona uma ação Filter array para isolar apenas o que correu mal. No campo From, usa a função result() para obteres o estado de todas as ações do Scope "Try":
result('Try')
Depois, no modo avançado da condição, mantém apenas as ações falhadas (e as que expiraram) com esta expressão:
or(equals(item()?['status'], 'Failed'), equals(item()?['status'], 'TimedOut'))
O resultado é uma lista só com as ações problemáticas, cada uma com o nome, o código e o objeto de erro devolvido pelo conector.
Passo 4: Enviar uma notificação com o erro
Ainda dentro do "Catch", adiciona a ação Enviar um email (V2) do Outlook ou Post message in a chat or channel do Teams. No corpo da mensagem, mostra a mensagem da primeira ação falhada com esta expressão:
first(body('Filter_array'))?['error']?['message']
Um assunto direto, como "Falha no fluxo de faturação", ajuda a equipa a triar o problema em segundos, mesmo antes de abrir o Power Automate.
Passo 5: Garantir a limpeza com um Scope "Finally"
Se houver ações que devem correr sempre, aconteça o que acontecer — como registar o fim da execução ou fechar uma ligação —, cria um terceiro Scope chamado "Finally". Configura o Configure run after do "Finally" para as quatro opções (has succeeded, has failed, is skipped e has timed out). Assim garantes que essa lógica corre tanto no caminho de sucesso como no de erro.
Dica: mantém o Scope "Try" focado. Quanto mais pequeno e específico for, mais fácil é interpretar o erro devolvido.
Verificar o resultado
Para testar, força um erro de propósito: aponta uma ação para um ficheiro que não existe ou usa um valor inválido. Guarda e executa o fluxo. No histórico de execuções, o "Try" deve aparecer a vermelho (falhado) e o "Catch" a verde (executado), e deves receber a notificação com a mensagem de erro. Se o "Catch" ficar cinzento (skipped), revê o Configure run after: quase de certeza a opção has failed não ficou marcada.
Conclusão
Com apenas três Scopes e a opção Configure run after, transformaste um fluxo frágil num processo que se explica quando falha, poupando horas de investigação às cegas. O próximo passo é padronizar: guarda este modelo Try-Catch-Finally como fluxo de referência e reutiliza-o em todos os projetos. Qual é o fluxo crítico que vais proteger primeiro com este padrão?