Better to not cause the damage in the first place, consolidate the parts of the transaction that were usefully completed into an isolated location, and provide a way to resolve the issue and resume the transaction. I think at least Pacman and Yum do this.