is thrown

operator

Return type:
Switch
Returns:
true if catch-name has been thrown but has not yet been caught, and false otherwise. Replacing is with isnt will reverse the results.
Syntax
catch-name (is | isnt) thrown


Purpose

You can use the is thrown test to determine if a throw is in progress to catch-name.

catch-name can be any of the following:

A compile-time error is produced if catch-name is not declared within the program, nor it is one of the two built-in catches.

Because OmniMark allows multiple throws at the same time, you may not want to produce an additional throw while another throw is being processed. Using is thrown can avoid having multiple throws caused by the same error condition.

Actions in an always clause are always executed at the end of a local scope, whether a throw is in progress or not. A throw within an always clause can leave you with two throws active at once. If this is inappropriate, you can test as follows:

   always
     do when count > 5000
        throw bar 
           unless #external-exception is thrown 
     done