Issue ? (catch all does not exist for an exception) - Proposal for discussion

I searched the bug db but could not locate a number for this issue even though we had discussed this many times
(Greg can you check and give a number to this issue?

For resolving issue ? (?) here is my proposal:


One or more Exception WorkUnit(s) MAY be defined as part of the Exception block of an enclosing Choreography for the purpose of handling the exceptional conditions occurring on that Choreography. To handle these, an Exception Work Unit MAY express interest on fault information using its reaction Guard. If no reaction Guard is specified, then the Exception Work Unit expresses interest on any type of fault. Within the Exception Block of a Choreography there MUST NOT be more than one Exception Work Units without reaction Guard defined.
Exception Work Units are enabled when the enclosing Choregraphy is enabled. An Exception Work Unit MAY be enabled only once for an enclosing Choreography. Exception Work Units enabled in an enclosing Choreography MAY behave as the default mechanism to recover from faults for all its enclosed Choreographies. Exception Work Units enabled in an enclosed Choreography MAY behave as a mechanism to recover from faults for any of its enclosing Choreographies.
Within the Exception Block of a Choreography only one Exception Work Unit MAY be matched.
The rules for matching a fault is done as follows:
· If a fault is matched by the reaction Guard of an Exception Work Unit, then the actions of the matched Work Unit are enabled for recovering from the fault. The order of evaluating the reaction Guards is based on the order that the Work Units have being defined within the Exception Block.
· If none of the reaction Guard(s) match, then if there is an Exception Work Unit without a reaction Guard defined then its actions are enabled for recovering from the fault
· If there is only one Exception Work Unit with no reaction Guard defined, then its actions are enabled for recovering from the fault
· Otherwise, the fault is not matched by an Exception Work Unit defined within the Choreography in which the fault occurs, and in this case the fault will be recursively propagated to the enclosing Exception Work Unit until a match is successful
If a fault occurs within a Choreography, then the faulted Choreography completes unsuccessfully and its Finalizer WorkUnit is not enabled. The actions, including enclosed Choreographies, enabled within the faulted Choreography are completed abnormally before an Exception Work Unit can be matched.
The actions within the Exception Work Unit MAY use variable information visible in the Visibility Horizon of its enclosing Choreography as they stand at the current time.
The actions of an Exception Work Unit MAY also fault. The semantics for matching the fault and acting on it are the same as described in this section.



--
Nick

Received on Wednesday, 15 September 2004 15:59:34 UTC