How to continue with next transaction if an unexpected error/exception occurs while processing transaction items

I’ve been using queues quite a bit more, but am not sure how to structure the workflow so that processing will continue with the next transaction item if the an unexpected error occurs during the current transaction.

For example, in Queue1 the robot is working on transaction1. Midway through transaction1, an unexpected error comes up. I have an overall try-catch setup for the entire workflow so that if this happens, the robot will log the error, close out of programs, and set the transaction status to an application error.

However, if I leave it as is, the robot will stop. How can I instruct the robot to continue with the process by grabbing transaction2?

1 Like

Anyone have ideas?

Right now the best idea I have is to have a parent workflow with an overall try-catch as follows. It’s a bit of a pain re-working workflows to follow this pattern though as the arguments/variables will sometimes get screwed up when attempting to right click & extract as workflow on the original processing workflow.

Try
invoke processing workflow

Catch
If Transaction is Not Nothing
Set Transaction Status = application failure
Invoke processing workflow
End if

Hi @Dave,

I share this with my limited knowledge in your requirement. Probably you can have a structure like this,

Get transaction Item
  Check transItem Is not nothing (FlowDecision)
  Yes - Invoke processing workflow 
           Try 
               Perform set of operations
           Catch
               Exception if any
 [Connect this sequence back to the above conditional check]
  No - Stop the process peacefully with your own steps
    
  • Small change from your implementation - No need of invoking the process workflow again in catch.
  • Maintain one Try-Catch and perform operations whatever you wanna do in TRY Block and catch it in CATCH if there is an exception.
  • Keep the conditional check of get transaction item outside the invoke processing workflow, might be in Main.xaml
1 Like