It is possible to raise a condition during execution of an ON-unit that specifies another ON-unit. An ON-unit entered because a condition is either raised or signalled in another ON-unit is a dynamically descendent ON-unit. A normal return from a dynamically descendent ON-unit reestablishes the environment of the ON-unit in which the condition was raised.
A loop can occur if an ERROR condition raised in an ERROR ON-unit executes the same ERROR ON-unit, raising the ERROR condition again. In any situation where a loop can cause the maximum nesting level to be exceeded, a message is printed and the application is terminated. To avoid a loop caused by this situation, use the following technique:
on error begin; on error system;
·
·
·
end;