Go to the first, previous, next, last section, table of contents.


unwind

unwind_expression:
          unwind `(' protection `)' body
        ;

protection:
          expression
        ;

An unwind evaluates the body, followed by the evaluation of the protection. The value returned by the unwind is the value of its body.

If, during the evalutation of the body, a tag is thrown, prematurely exiting the context of the unwind, the protection expression is still evaluated. If the protection code does not raise or throw anything, then after its evaluation the original throw causing its invocation will continue to be thrown futher.


Go to the first, previous, next, last section, table of contents.