Fault Handlers

Errors (or faults) can occur when executing a process. Fault handlers allow you to catch faults or exceptions and create fault-handling procedures to deal with potential runtime errors in your process definitions.

Fault handlers are the recommended way to catch faults or exceptions in a process. Two types of fault handlers are available: Catch Specific Fault and Catch All Faults.

Fault handlers can be defined at two different levels:
  • Process level - When defined at the process level, allows you to catch fault in a process.
  • Scope level - When defined at the scope level, allows you to catch fault within a scope.

Fault handlers when defined at the scope level, allows you to catch faults or exceptions thrown by activities within a scope. To catch faults or exceptions specific to an individual activity, you need to define a new scope for that individual activity and attach a fault handler to the new scope.

At runtime, once a fault handler is executed, the associated scope will not complete due to the error thrown. If a fault is not thrown in the fault handler, the process execution continues with the first activity that follows the scope. If a fault is thrown in the fault handler, then the engine looks for an enclosing scope that is designed to handle the fault. If one is found, the engine executes it. Once the enclosing fault handler finishes its execution, the engine executes the next activity following the scope. If no fault handlers are found in the enclosing scopes, then the job terminates with a fault.

Consider the fault handlers defined in the sample process.

Sample Fault Handlers

If an exception is caught in the inner scope, the exception is logged to a file and the scope is completed. The process execution then continues to the WriteFile activity, which is the next activity in the process. If an exception is caught in the outer scope, the exception is logged and the scope is completed. The process execution completes successfully as there are no following activities to be processed. An Exit activity inside the fault handler will return the control out of the scope and the process.

Error Transitions can also be used to handle error conditions by using them to specify transition to take in case of an error.
Note: Error transitions take precedence over fault handlers. So if an error is encountered in a scope and it has both a fault handler and an error transition, then the fault handler will not be executed.