Failure transparency and commit semantics are the two highest levels of (*) "safety" against it.
Kyle Wilson mentioned that the program he wrote for Mech Assault 2 did not perform this task. If this task is programmed for in C++ but never accomplished, three pushes, two movs in the prologue, and two movs in the epilogue get wasted. Along with global exit-status variable, multivalued return, or expanding the type, this task is a solution to the semipredicate problem. Failure transparency and commit semantics are the two highest levels of (*) "safety" against it. In most languages, it is performed by going through the stack of function calls and terminating them until the correct one is found. A try/catch is used in Java to handle this task, which needs to be done when its namesake is "thrown." Situations that might call for it include array index out of bounds. For 10 points, name this task in which a computer program interrupts itself to deal with certain types of namesake errors, like dividing by zero or stack overflow. 
Kyle Wilson mentioned that the program he wrote for Mech Assault 2 did not perform this task.
exception handling [prompt on "error handling"]