Limitations for the TRY, CATCH, and FINALLY Steps
The TRY, CATCH, and FINALLY steps have various limitations that need to be considered as part of building flow services that use the TRY, CATCH, and FINALLY steps. This includes requirements about how the steps are ordered and which failures a flow service can catch.
Keep the following general information in mind when building TRY, CATCH, and FINALLY steps:
A flow service cannot catch its own failure if the failure is caused by a flow definition error or by an EXIT step configured to exit the flow and signal failure. When a FlowException occurs in a flow service,
Integration Server terminates the entire flow service immediately.
Integration Server does not execute any remaining CATCH or FINALLY steps in the terminated flow service. However, a flow service can catch a FlowException that resulted from a failure in a flow service that it invoked. For example, suppose that flow serviceA invokes serviceB. If a FlowException occurs in serviceB, it cannot be caught in serviceB. But serviceA can include logic that catches and handles the FlowException thrown by serviceB.
Even though it is possible to use an EXIT step to exit a flow, signal failure, and specify a failure other than FlowException,
Integration Server still terminates the flow service immediately. This behavior cannot be overridden.
Because the purpose of the TRY, CATCH, and FINALLY steps is to catch, handle, and clean up after failures, the
Exit on property for TRY, CATCH, and FINALLY steps is always set to FAILURE. The TRY, CATCH, or FINALLY step exits when a step that it contains fails. This cannot be changed.
It is generally possible to move or copy a block of existing flow built in versions of
Integration Server prior to version 10.3 into a TRY, CATCH, or FINALLY without affecting the original behavior. However, an exception to this is for an existing flow step that includes an EXIT step that exits a $loop or label and signals failure and then propagates the failure through a TRY, CATCH, or FINALLY step. When
Integration Server executes the EXIT step in this situation, a FlowException occurs.
For more information about TRY, CATCH, and FINALLY steps considerations that need to be taken into account, refer to the following topics: