Fault handling in a BPEL process refers to the procedures performed when an exception or unanticipated condition occurs during normal processing. The work performed restores state so that predictable results always occur. Fault handling differs from compensation handling in that fault handling happens when a fault occurs within a scope whereas compensation reverses the work of a successfully completed scope. This means that the fault handler has access to information contained within the scope.
A fault can occur for the following reasons:
A web service operation cannot complete successfully, and the service returns a fault
An internal process error occurs, and a standard BPEL fault is thrown. Refer to the list of
BPEL Standard Faults
in the
Process Developer Help
for more information.
A
<throw>
or
<rethrow>
activity throws a fault
A platform-specific fault, such as a communication failure, occurs in a BPEL process instance
Fault handling can be global or local: you can add fault handlers to the process as a whole or to a scope within the process.
When a fault occurs, normal processing is terminated, and control is transferred to the corresponding fault handler, as defined in the
<faultHandlers>
section of the process or scope.
Note that the process does not enable compensation for a scope in which a fault handler is invoked.
Fault handlers do not rely on state to determine which nested scopes have completed successfully.
For a discussion of fault handling and compensation handling for a scope, see