1. A computerized method comprising: providing language constructs to applications programmers comprising program state reversion constructs; receiving, in a computer, a representation of a program having one or more program state reversion constructs comprising a reversion indication construct indicating a series of instructions to revert, wherein the series of instructions to revert comprises less than all of the instructions in a method; inserting code into the program comprising: code for recording program state before modifications are made by the series of instructions indicated by the reversion indication construct, and saving the program state in one or more data structures, and code for reverting program state to the recorded program state when an exception arises from the series of instructions indicated by the reversion indication construct; and executing the program and inserted code comprising: recording program state in the one or more data structures prior to executing the series of instructions indicated by the reversion indication construct, wherein the one or more data structures comprises a first linked list saving program state for value types that are changed in heap memory, a second linked list saving program state for value types that are changed in non-heap memory, a third linked list saving program state for object references that are changed in heap memory and a fourth linked list for saving program state for object references that are changed in non-heap memory; and upon generating an exception while executing the series of instructions indicated by the reversion indication construct, reverting program state according to the recorded program state.