How to handle errors in Power Automate with a Scope try catch
Put your actions inside a Scope named Try, add a second Scope named Catch, and set Catch to run only when Try has failed or timed out. Power Automate has no built-in try catch, so Scope and Configure run after do the job.
What is a Scope action in Power Automate?
A Scope is a container. You drop other actions inside it and the flow treats them as one unit. If any action inside fails, the Scope itself shows as failed.
That one status is what makes try catch possible. You test the Scope, not each action.
How do you build a try catch in a flow?
- Add a Scope from Control and rename it Try.
- Move the actions that can fail into Try.
- Add a second Scope after Try and rename it Catch.
- On Catch, select the three dots, then Configure run after.
- Clear is successful. Select has failed and has timed out. Select Done.
- Put your error steps inside Catch, such as an email to you or a row in an error log list.
What does Configure run after do?
Each action runs after the one before it. By default it runs only when the earlier action succeeded. Configure run after lets you pick other results: is successful, has failed, is skipped, and has timed out.
For Catch, pick has failed and has timed out. Add is skipped if you also want to hear about a Try that never ran.
How do you see which action failed?
Add a Compose action inside Catch with the expression result('Try'). Use the exact name of your Scope. The expression returns the status and output of every action inside it.
To keep only the failure, add a Filter array action. Set From to the result('Try') output and the condition to item()?['status'] is equal to Failed. The result function reads one level of actions, so a failure inside a Condition or an Apply to each can need a second result() call on that inner action.
What is a Finally scope?
A Finally scope holds steps that must run every time, such as setting a status or closing a log row. Add a third Scope after Catch. In Configure run after, select all four options.
Finally then runs whether Catch succeeded, failed, was skipped or timed out.
Why does the run show Succeeded after Try failed?
When Catch runs and finishes, the run history marks the whole flow as Succeeded. The failure inside Try is hidden unless you open the run.
To keep the failure visible, add a Terminate action at the end of Catch and set its status to Failed. See our guide on the Terminate action.
What should you check before you trust it?
- Force a failure on purpose, for example point a SharePoint action at a list that does not exist.
- Open the run history and confirm Catch ran, the error message arrives, and the run shows Failed. See our guide on run history limits.
- Confirm the flow owner gets the alert, so a departed owner does not hide errors. See flow owner left the company.
FAQ
Does Power Automate have a real try catch?
No. You build it with Scope actions and Configure run after settings.
Can one Catch cover several actions?
Yes. Put all the actions in one Try scope and one Catch handles any failure inside it.
Does a Catch scope use extra runs or cost?
The Scope counts as one action toward your daily request limit. The actions inside count the same as they would outside it.
Why does action failed no dependent actions succeeded appear?
A later action did not have a run after setting for the failure. See that error guide.
Sources
- Power Automate error handling guidance
- Try, catch and finally in a Power Automate flow
- Get the result of your failed actions in Power Automate
- Power Automate Standards: Error-Handling