<p>If I have an Address object which implements IEditableObject, I might have EndEdit implementation like this:</p>

<pre><code>public void EndEdit()
{
    // BeginEdit would set _editInProgress and update *Editing fields;
    if (_editInProgress)
    {
        _line1 = _line1Editing;
        _line2 = _line2Editing;
        _city = _cityEditing;
        _state = _stateEditing;
        _postalCode = _postalCodeEditing;
        _editInProgress = false;
    }
}
</code></pre>

<p>If there is an exception updating <strong><em>_state</em></strong>, for example, then all 5 properties should reset.  This atomic update issue probably isn't limited to EndEdit.</p>

First off, Kent is correct in wondering why setting a field would throw an exception.
Ignoring that question; you could just use a simple:
```
```
try {
  //do stuff
}
catch (Exception ex) {
  //reset

  //rethrow exception
  throw;
}
```
```
The complications come in with regards to what constitutes the reset value for each field?
The last value
A default value
Some token value denoting an invalid state
A mix of the above
If you need to "reset" to the last value then you'll likely want some way to easily store the object state before doing something to it, along with the ability to easily restore that state should something go wrong.  Check out the
Momento Pattern
on a nifty way to deal with that problem.