Existing methods for returning program state to a previous state are often
too heavy weight. Often these methods attempt to guarantee a series of
properties to a programmer across a distributed environment or multiple
threads. Instead, a program state reversion mechanism provides a light
weight and efficient runtime solution for general purpose programming
languages. For example, a series of program statements (e.g., methods,
instructions, etc.) are indicated by a programmer in a state reversion
language construct, such as a TryAll block. If an exception is thrown
anywhere from within the TryAll block, the program is reverted to the
pre-TryAll block state.